added cluster communication library (unfinished, used by SH)
[public/netxms.git] / include / nxcc.h
CommitLineData
a7a4c1e9
VK
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 node states
22 */
23enum ClusterNodeState
24{
25 CLUSTER_NODE_DOWN = 0,
26 CLUSTER_NODE_CONNECTED = 1,
27 CLUSTER_NODE_UP = 2
28};
29
30/**
31 * Cluster node event handler
32 */
33class ClusterEventHandler
34{
35public:
36 ClusterEventHandler();
37 virtual ~ClusterEventHandler();
38
39 virtual void onNodeJoin(UINT32 nodeId);
40 virtual void onNodeDisconnect(UINT32 nodeId);
41 virtual void onShutdown();
42
43 virtual void onMessage(NXCPMessage *msg, UINT32 sourceNodeId);
44};
45
46/**
47 * API functions
48 */
49bool LIBNXCC_EXPORTABLE ClusterInit(Config *config, const TCHAR *section, ClusterEventHandler *eventHandler);
50bool LIBNXCC_EXPORTABLE ClusterJoin();
51void LIBNXCC_EXPORTABLE ClusterShutdown();
52
53void LIBNXCC_EXPORTABLE ClusterSetDebugCallback(void (*cb)(int, const TCHAR *, va_list));
54
55bool LIBNXCC_EXPORTABLE ClusterIsMasterNode();
56
57#endif