Server side implementation of event groups. Fixes #NX-1102
[public/netxms.git] / include / nxcc.h
index e82751c..276432f 100644 (file)
 #define NXCC_RCC_INVALID_REQUEST 5
 
 /**
+ * Base value for custom notifications
+ */
+#define NXCC_CUSTOM_NOTIFICATION_BASE  1000
+
+/**
  * Cluster node states
  */
 enum ClusterNodeState
@@ -39,6 +44,16 @@ enum ClusterNodeState
 };
 
 /**
+ * Cluster message processing result
+ */
+enum ClusterMessageProcessingResult
+{
+   CLUSTER_MSG_IGNORED = 0,
+   CLUSTER_MSG_PROCESSED = 1,
+   CLUSTER_MSG_QUEUED = 2
+};
+
+/**
  * Cluster node event handler
  */
 class LIBNXCC_EXPORTABLE ClusterEventHandler
@@ -51,8 +66,10 @@ public:
    virtual void onNodeUp(UINT32 nodeId);
    virtual void onNodeDisconnect(UINT32 nodeId);
    virtual void onShutdown();
+   virtual void onSplitBrain();
    
-   virtual bool onMessage(NXCPMessage *msg, UINT32 sourceNodeId);
+   virtual ClusterMessageProcessingResult onMessage(NXCPMessage *msg, UINT32 sourceNodeId);
+   virtual void onNotification(int code, UINT32 sourceNodeId);
 };
 
 /**
@@ -63,8 +80,6 @@ bool LIBNXCC_EXPORTABLE ClusterJoin();
 void LIBNXCC_EXPORTABLE ClusterSetRunning();
 void LIBNXCC_EXPORTABLE ClusterShutdown();
 
-void LIBNXCC_EXPORTABLE ClusterSetDebugCallback(void (*cb)(int, const TCHAR *, va_list));
-
 UINT32 LIBNXCC_EXPORTABLE ClusterGetLocalNodeId();
 UINT32 LIBNXCC_EXPORTABLE ClusterGetMasterNodeId();
 bool LIBNXCC_EXPORTABLE ClusterIsMasterNode();
@@ -74,6 +89,7 @@ bool LIBNXCC_EXPORTABLE ClusterAllNodesConnected();
 void LIBNXCC_EXPORTABLE ClusterNotify(NXCPMessage *msg);
 void LIBNXCC_EXPORTABLE ClusterNotify(INT16 code);
 void LIBNXCC_EXPORTABLE ClusterDirectNotify(UINT32 nodeId, INT16 code);
+void LIBNXCC_EXPORTABLE ClusterDirectNotify(UINT32 nodeId, NXCPMessage *msg);
 int LIBNXCC_EXPORTABLE ClusterSendCommand(NXCPMessage *msg);
 UINT32 LIBNXCC_EXPORTABLE ClusterSendDirectCommand(UINT32 nodeId, NXCPMessage *msg);
 NXCPMessage LIBNXCC_EXPORTABLE *ClusterSendDirectCommandEx(UINT32 nodeId, NXCPMessage *msg);