changes in cluster API
authorVictor Kirhenshtein <victor@netxms.org>
Thu, 25 Aug 2016 08:27:37 +0000 (11:27 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Thu, 25 Aug 2016 08:27:37 +0000 (11:27 +0300)
include/nxcc.h
src/libnxcc/comm.cpp
src/libnxcc/libnxcc.h

index a9e6d79..d8ddca3 100644 (file)
@@ -83,6 +83,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);
index 349273c..c901aea 100644 (file)
@@ -475,21 +475,33 @@ void LIBNXCC_EXPORTABLE ClusterDirectNotify(UINT32 nodeId, INT16 code)
 {
    int index = FindClusterNode(nodeId);
    if (index != -1)
-      ClusterDirectNotify(&g_nxccNodes[index], code);
+   {
+      NXCPMessage msg;
+      msg.setCode(CMD_CLUSTER_NOTIFY);
+      msg.setField(VID_NOTIFICATION_CODE, code);
+      ClusterDirectNotify(&g_nxccNodes[index], &msg);
+   }
+}
+
+/**
+ * Direct notify
+ */
+void LIBNXCC_EXPORTABLE ClusterDirectNotify(UINT32 nodeId, NXCPMessage *msg)
+{
+   int index = FindClusterNode(nodeId);
+   if (index != -1)
+      ClusterDirectNotify(&g_nxccNodes[index], msg);
 }
 
 /**
  * Direct notify with just notification code
  */
-void ClusterDirectNotify(ClusterNodeInfo *node, INT16 code)
+void ClusterDirectNotify(ClusterNodeInfo *node, NXCPMessage *msg)
 {
-   NXCPMessage msg;
-   msg.setCode(CMD_CLUSTER_NOTIFY);
-   msg.setId((UINT32)InterlockedIncrement(&s_commandId));
-   msg.setField(VID_NOTIFICATION_CODE, code);
-   msg.setField(VID_NODE_ID, g_nxccNodeId);
-   msg.setField(VID_IS_MASTER, (INT16)(g_nxccMasterNode ? 1 : 0));
-   ClusterSendMessage(node, &msg);
+   msg->setId((UINT32)InterlockedIncrement(&s_commandId));
+   msg->setField(VID_NODE_ID, g_nxccNodeId);
+   msg->setField(VID_IS_MASTER, (INT16)(g_nxccMasterNode ? 1 : 0));
+   ClusterSendMessage(node, msg);
 }
 
 /**
@@ -583,7 +595,7 @@ UINT32 LIBNXCC_EXPORTABLE ClusterSendDirectCommand(UINT32 nodeId, NXCPMessage *m
    }
 
    UINT32 rcc = response->getFieldAsUInt32(VID_RCC);
-   if (rcc != 0)
+   if (rcc != NXCC_RCC_SUCCESS)
    {
       nxlog_debug(5, _T("ClusterDirectCommand: failed request to peer %d (rcc=%d, requestId=%d)"), nodeId, rcc, msg->getId());
    }
index 7441f39..75f1ef6 100644 (file)
@@ -80,7 +80,7 @@ enum ClusterNotificationCode
 void ClusterDisconnect();
 void ChangeClusterNodeState(ClusterNodeInfo *node, ClusterNodeState state);
 void ClusterSendMessage(ClusterNodeInfo *node, NXCPMessage *msg);
-void ClusterDirectNotify(ClusterNodeInfo *node, INT16 code);
+void ClusterDirectNotify(ClusterNodeInfo *node, NXCPMessage *msg);
 
 void PromoteClusterNode();