set thread names in server
[public/netxms.git] / include / netxms_isc.h
index fb29fa9..25afd45 100644 (file)
 **/
 
 #ifndef _netxms_isc_h_
-#define _netxms_isc_h_\r
-\r
-\r
-//\r
-// Default port number\r
-//\r
-\r
-#define NETXMS_ISC_PORT        4702\r
-\r
-\r
-//\r
-// Well-known ISC services\r
-//\r
-\r
-#define ISC_SERVICE_EVENT_FORWARDER    ((DWORD)1)\r
-#define ISC_SERVICE_OBJECT_SYNC        ((DWORD)2)\r
-#define ISC_SERVICE_LICENSE_SERVER     ((DWORD)3)\r
-\r
-#define ISC_SERVICE_CUSTOM_1           ((DWORD)100000)\r
-\r
-\r
-//\r
-// ISC error codes\r
-//\r
-\r
-\r
-#define ISC_ERR_SUCCESS                ((DWORD)0)\r
-#define ISC_ERR_UNKNOWN_SERVICE        ((DWORD)1)\r
-#define ISC_ERR_REQUEST_OUT_OF_STATE   ((DWORD)2)\r
-#define ISC_ERR_SERVICE_DISABLED       ((DWORD)3)\r
-#define ISC_ERR_ENCRYPTION_REQUIRED    ((DWORD)4)\r
-#define ISC_ERR_CONNECTION_BROKEN      ((DWORD)5)\r
-#define ISC_ERR_ALREADY_CONNECTED      ((DWORD)6)\r
-#define ISC_ERR_SOCKET_ERROR           ((DWORD)7)\r
-#define ISC_ERR_CONNECT_FAILED         ((DWORD)8)\r
-#define ISC_ERR_INVALID_NXCP_VERSION   ((DWORD)9)\r
-#define ISC_ERR_REQUEST_TIMEOUT        ((DWORD)10)\r
-#define ISC_ERR_NOT_IMPLEMENTED        ((DWORD)11)\r
-#define ISC_ERR_NO_CIPHERS             ((DWORD)12)\r
-#define ISC_ERR_INVALID_PUBLIC_KEY     ((DWORD)13)\r
-#define ISC_ERR_INVALID_SESSION_KEY    ((DWORD)14)\r
-#define ISC_ERR_INTERNAL_ERROR         ((DWORD)15)\r
-#define ISC_ERR_SESSION_SETUP_FAILED   ((DWORD)16)\r
-\r
-\r
-//\r
-// ISC service definition\r
-//\r
-\r
-typedef struct\r
-{\r
-       DWORD id;                                                               // Service ID\r
-       const TCHAR *name;                                      // Name\r
-       const TCHAR *enableParameter;           // Server parameter to be set to enable service\r
-       void *(*setupSession)(CSCPMessage *);  // Session setup handler\r
-       void (*closeSession)(void *);          // Session close handler\r
-       BOOL (*processMsg)(void *, CSCPMessage *, CSCPMessage *);\r
-} ISC_SERVICE;\r
+#define _netxms_isc_h_
+
+/**
+ * Default ISC port number
+ */
+#define NETXMS_ISC_PORT        4702
+
+/**
+ * Well-known ISC services
+ */
+#define ISC_SERVICE_EVENT_FORWARDER    ((UINT32)1)
+#define ISC_SERVICE_OBJECT_SYNC        ((UINT32)2)
+#define ISC_SERVICE_LICENSE_SERVER     ((UINT32)3)
+
+#define ISC_SERVICE_CUSTOM_1           ((UINT32)100000)
+
+/**
+ * ISC error codes
+ */
+#define ISC_ERR_SUCCESS                ((UINT32)0)
+#define ISC_ERR_UNKNOWN_SERVICE        ((UINT32)1)
+#define ISC_ERR_REQUEST_OUT_OF_STATE   ((UINT32)2)
+#define ISC_ERR_SERVICE_DISABLED       ((UINT32)3)
+#define ISC_ERR_ENCRYPTION_REQUIRED    ((UINT32)4)
+#define ISC_ERR_CONNECTION_BROKEN      ((UINT32)5)
+#define ISC_ERR_ALREADY_CONNECTED      ((UINT32)6)
+#define ISC_ERR_SOCKET_ERROR           ((UINT32)7)
+#define ISC_ERR_CONNECT_FAILED         ((UINT32)8)
+#define ISC_ERR_INVALID_NXCP_VERSION   ((UINT32)9)
+#define ISC_ERR_REQUEST_TIMEOUT        ((UINT32)10)
+#define ISC_ERR_NOT_IMPLEMENTED        ((UINT32)11)
+#define ISC_ERR_NO_CIPHERS             ((UINT32)12)
+#define ISC_ERR_INVALID_PUBLIC_KEY     ((UINT32)13)
+#define ISC_ERR_INVALID_SESSION_KEY    ((UINT32)14)
+#define ISC_ERR_INTERNAL_ERROR         ((UINT32)15)
+#define ISC_ERR_SESSION_SETUP_FAILED   ((UINT32)16)
+#define ISC_ERR_OBJECT_NOT_FOUND       ((UINT32)17)
+#define ISC_ERR_POST_EVENT_FAILED      ((UINT32)18)
+
+/**
+ * ISC session
+ */
+class ISCSession
+{
+private:
+       SOCKET m_socket;
+       UINT32 m_peerAddress;   // Peer address in host byte order
+       void *m_userData;
+
+public:
+       ISCSession(SOCKET sock, struct sockaddr_in *addr)
+       {
+               m_socket = sock;
+               m_peerAddress = ntohl(addr->sin_addr.s_addr);
+               m_userData = NULL;
+       }
+
+       SOCKET GetSocket() { return m_socket; }
+       UINT32 GetPeerAddress() { return m_peerAddress; }
+
+       void SetUserData(void *data) { m_userData = data; }
+       void *GetUserData() { return m_userData; }
+};
+
+/**
+ * ISC service definition
+ */
+typedef struct
+{
+       UINT32 id;                                                              // Service ID
+       const TCHAR *name;                                      // Name
+       const TCHAR *enableParameter;           // Server parameter to be set to enable service
+       BOOL (*setupSession)(ISCSession *, NXCPMessage *);  // Session setup handler
+       void (*closeSession)(ISCSession *);          // Session close handler
+       BOOL (*processMsg)(ISCSession *, NXCPMessage *, NXCPMessage *);
+} ISC_SERVICE;
 
 
 #endif