libnxcc: added function ClusterSendResponseEx
[public/netxms.git] / include / nxcc.h
1 #ifndef _nxcc_h_
2 #define _nxcc_h_
3
4 #ifdef _WIN32
5 #ifdef LIBNXCC_EXPORTS
6 #define LIBNXCC_EXPORTABLE __declspec(dllexport)
7 #else
8 #define LIBNXCC_EXPORTABLE __declspec(dllimport)
9 #endif
10 #else /* _WIN32 */
11 #define LIBNXCC_EXPORTABLE
12 #endif
13
14 #include <nms_common.h>
15 #include <nms_util.h>
16 #include <nms_threads.h>
17 #include <nxcpapi.h>
18 #include <nxconfig.h>
19
20 /**
21 * Cluster error codes
22 */
23 #define NXCC_RCC_SUCCESS 0
24 #define NXCC_RCC_INVALID_NODE 1
25 #define NXCC_RCC_TIMEOUT 2
26 #define NXCC_RCC_COMM_FAILURE 3
27
28 /**
29 * Cluster node states
30 */
31 enum ClusterNodeState
32 {
33 CLUSTER_NODE_DOWN = 0,
34 CLUSTER_NODE_CONNECTED = 1,
35 CLUSTER_NODE_SYNC = 2,
36 CLUSTER_NODE_UP = 3
37 };
38
39 /**
40 * Cluster node event handler
41 */
42 class LIBNXCC_EXPORTABLE ClusterEventHandler
43 {
44 public:
45 ClusterEventHandler();
46 virtual ~ClusterEventHandler();
47
48 virtual void onNodeJoin(UINT32 nodeId);
49 virtual void onNodeUp(UINT32 nodeId);
50 virtual void onNodeDisconnect(UINT32 nodeId);
51 virtual void onShutdown();
52
53 virtual bool onMessage(NXCPMessage *msg, UINT32 sourceNodeId);
54 };
55
56 /**
57 * API functions
58 */
59 bool LIBNXCC_EXPORTABLE ClusterInit(Config *config, const TCHAR *section, ClusterEventHandler *eventHandler);
60 bool LIBNXCC_EXPORTABLE ClusterJoin();
61 void LIBNXCC_EXPORTABLE ClusterSetRunning();
62 void LIBNXCC_EXPORTABLE ClusterShutdown();
63
64 void LIBNXCC_EXPORTABLE ClusterSetDebugCallback(void (*cb)(int, const TCHAR *, va_list));
65
66 UINT32 LIBNXCC_EXPORTABLE ClusterGetLocalNodeId();
67 UINT32 LIBNXCC_EXPORTABLE ClusterGetMasterNodeId();
68 bool LIBNXCC_EXPORTABLE ClusterIsMasterNode();
69 bool LIBNXCC_EXPORTABLE ClusterIsSyncNeeded();
70 bool LIBNXCC_EXPORTABLE ClusterAllNodesConnected();
71
72 void LIBNXCC_EXPORTABLE ClusterNotify(NXCPMessage *msg);
73 void LIBNXCC_EXPORTABLE ClusterNotify(INT16 code);
74 void LIBNXCC_EXPORTABLE ClusterDirectNotify(UINT32 nodeId, INT16 code);
75 int LIBNXCC_EXPORTABLE ClusterSendCommand(NXCPMessage *msg);
76 UINT32 LIBNXCC_EXPORTABLE ClusterSendDirectCommand(UINT32 nodeId, NXCPMessage *msg);
77 NXCPMessage LIBNXCC_EXPORTABLE *ClusterSendDirectCommandEx(UINT32 nodeId, NXCPMessage *msg);
78 void LIBNXCC_EXPORTABLE ClusterSendResponse(UINT32 nodeId, UINT32 requestId, UINT32 rcc);
79 void LIBNXCC_EXPORTABLE ClusterSendResponseEx(UINT32 nodeId, UINT32 requestId, NXCPMessage *msg);
80
81 #endif