- Added header file nms_util.h which defines interface to utility library [Victor]
authorVictor Kirhenshtein <victor@netxms.org>
Mon, 8 Dec 2003 17:32:34 +0000 (17:32 +0000)
committerVictor Kirhenshtein <victor@netxms.org>
Mon, 8 Dec 2003 17:32:34 +0000 (17:32 +0000)
- Define "EXPORTABLE" added to implement DLL interface in WIn32 version [Victor]

.gitattributes
include/nms_common.h
include/nms_cscp.h
include/nms_util.h [new file with mode: 0644]

index b782f8a..ea215ad 100644 (file)
@@ -3,6 +3,7 @@ doc/internals.rtf -text
 include/nms_agent.h -text
 include/nms_common.h -text
 include/nms_cscp.h -text
+include/nms_util.h -text
 sql/clear.sql -text
 sql/events.sql -text
 sql/schema.sql -text
index bc5c9ae..24fef52 100644 (file)
 #ifndef _nms_common_h_
 #define _nms_common_h_
 
-#ifndef _WIN32
+#ifdef _WIN32
+
+typedef unsigned __int64 QWORD;
+
+#ifdef _USRDLL
+#define EXPORTABLE __declspec(dllexport)
+#else    /* _USRDLL */
+#define EXPORTABLE __declspec(dllimport)
+#endif   /* _USRDLL */
+
+#else
 
 typedef int BOOL;
 typedef unsigned long DWORD;
@@ -35,6 +45,8 @@ typedef void * HMODULE;
 #define TRUE   1
 #define FALSE  0
 
+#define EXPORTABLE
+
 #endif
 
 
index fc7453d..a0a00d4 100644 (file)
@@ -65,6 +65,15 @@ typedef struct
 } CSCP_MESSAGE;
 
 
+//
+// Data types
+//
+
+#define DT_INTEGER   0
+#define DT_STRING    1
+#define DT_INT64     2
+
+
 //
 // Message (command) codes
 //
diff --git a/include/nms_util.h b/include/nms_util.h
new file mode 100644 (file)
index 0000000..958a51f
--- /dev/null
@@ -0,0 +1,78 @@
+/* 
+** Project X - Network Management System
+** Copyright (C) 2003 Victor Kirhenshtein
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+**
+** $module: nms_util.h
+**
+**/
+
+#ifndef _nms_util_h_
+#define _nms_util_h_
+
+#include <nms_common.h>
+#include <nms_cscp.h>
+
+
+//
+// Class for holding CSCP messages
+//
+
+class EXPORTABLE CSCPMessage
+{
+private:
+   WORD m_wCode;
+   DWORD m_dwId;
+   DWORD m_dwNumVar;    // Number of variables
+   CSCP_DF **m_ppVarList;   // List of variables
+
+   void Set(char *szName, BYTE bType, void *pValue);
+   void *Get(char *szName, BYTE bType);
+   DWORD FindVariable(char *szName);
+
+public:
+   CSCPMessage();
+   CSCPMessage(CSCP_MESSAGE *pMsg);
+   ~CSCPMessage();
+
+   CSCP_MESSAGE *CreateMessage(void);
+
+   WORD GetCode(void) { return m_wCode; }
+   void SetCode(WORD wCode) { m_wCode = wCode; }
+
+   DWORD GetId(void) { return m_dwId; }
+   void SetId(DWORD dwId) { m_dwId = dwId; }
+
+   void SetVariable(char *szName, DWORD dwValue) { Set(szName, DT_INTEGER, &dwValue); }
+   void SetVariable(char *szName, QWORD qwValue) { Set(szName, DT_INT64, &qwValue); }
+   void SetVariable(char *szName, char *szValue) { Set(szName, DT_STRING, szValue); }
+
+   DWORD GetVariableLong(char *szName);
+   QWORD GetVariableInt64(char *szName);
+   char *GetVariableStr(char *szName);
+};
+
+
+//
+// Functions
+//
+
+extern "C"
+{
+   void EXPORTABLE LibUtilDestroyObject(void *pObject);
+}
+
+#endif   /* _nms_util_h_ */