libnxcc: split-brain condition handler added; debug callback replaced with calls...
authorVictor Kirhenshtein <victor@netxms.org>
Thu, 10 Mar 2016 21:04:38 +0000 (23:04 +0200)
committerVictor Kirhenshtein <victor@netxms.org>
Thu, 10 Mar 2016 21:04:38 +0000 (23:04 +0200)
include/nxcc.h
src/libnxcc/ceh.cpp
src/libnxcc/join.cpp
src/libnxcc/libnxcc.h
src/libnxcc/main.cpp

index 70cf27e..a9e6d79 100644 (file)
@@ -61,6 +61,7 @@ public:
    virtual void onNodeUp(UINT32 nodeId);
    virtual void onNodeDisconnect(UINT32 nodeId);
    virtual void onShutdown();
+   virtual void onSplitBrain();
    
    virtual ClusterMessageProcessingResult onMessage(NXCPMessage *msg, UINT32 sourceNodeId);
 };
@@ -73,8 +74,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();
index c6b9abd..d6e0936 100644 (file)
@@ -65,6 +65,13 @@ void ClusterEventHandler::onShutdown()
 }
 
 /**
+ * Split brain condition handler
+ */
+void ClusterEventHandler::onSplitBrain()
+{
+}
+
+/**
  * Incoming message handler
  * Possible return values:
  *    CLUSTER_MSG_PROCESSED - message is processed and should be deleted
index ac154a1..056e617 100644 (file)
@@ -30,7 +30,7 @@ void ClusterNodeJoin(void *arg)
    static const TCHAR *rspNames[] = { _T("ACCEPTED AS SECONDARY"), _T("ACCEPTED AS MASTER"), _T("WAIT FOR MASTER"), _T("SPLIT BRAIN") };
 
    ClusterNodeInfo *node = (ClusterNodeInfo *)arg;
-   ClusterDebug(4, _T("ClusterNodeJoin: requesting join from from node %d [%s]"), node->m_id, (const TCHAR *)node->m_addr->toString());
+   ClusterDebug(4, _T("ClusterNodeJoin: requesting join from node %d [%s]"), node->m_id, (const TCHAR *)node->m_addr->toString());
 
    NXCPMessage msg;
    msg.setCode(CMD_JOIN_CLUSTER);
@@ -54,6 +54,9 @@ void ClusterNodeJoin(void *arg)
             ChangeClusterNodeState(node, CLUSTER_NODE_SYNC);
             SetJoinCondition();
             break;
+         case CJR_SPLIT_BRAIN:
+            g_nxccEventHandler->onSplitBrain();
+            break;
       }
       delete response;
    }
index bb6e74d..7441f39 100644 (file)
@@ -72,11 +72,11 @@ enum ClusterNotificationCode
    CN_NODE_RUNNING = 2
 };
 
+#define ClusterDebug nxlog_debug
+
 /**
  * Internal functions
  */
-void ClusterDebug(int level, const TCHAR *format, ...);
-
 void ClusterDisconnect();
 void ChangeClusterNodeState(ClusterNodeInfo *node, ClusterNodeState state);
 void ClusterSendMessage(ClusterNodeInfo *node, NXCPMessage *msg);
index e4c09d2..119a575 100644 (file)
@@ -46,33 +46,6 @@ ClusterNodeInfo g_nxccNodes[CLUSTER_MAX_NODE_ID];
 ThreadPool *g_nxccThreadPool;
 
 /**
- * Debug callback
- */
-static void (*s_debugCallback)(int, const TCHAR *, va_list) = NULL;
-
-/**
- * Set debug callback
- */
-void LIBNXCC_EXPORTABLE ClusterSetDebugCallback(void (*cb)(int, const TCHAR *, va_list))
-{
-   s_debugCallback = cb;
-}
-
-/**
- * Debug output
- */
-void ClusterDebug(int level, const TCHAR *format, ...)
-{
-   if (s_debugCallback == NULL)
-      return;
-
-   va_list args;
-   va_start(args, format);
-   s_debugCallback(level, format, args);
-   va_end(args);
-}
-
-/**
  * Add cluster peer node from config
  */
 static bool AddPeerNode(TCHAR *cfg)