Beispiel #1
0
        protected void ParseHandler(DataReceivedUnit ou)
        {
            byte[] res = ou.DataFrame.Payload;
            SequenceNumber = res[0];
            NodeStatus     = (NodeStatuses)res[1];

            if (NodeStatus == NodeStatuses.AddingRemovingController || NodeStatus == NodeStatuses.AddingRemovingSlave)
            {
                if (NodeStatus == NodeStatuses.AddingRemovingSlave)
                {
                    SpecificResult.IsSlave = true; //set isController bit
                }
                if (res.Length > 2)
                {
                    SpecificResult.Id = res[2];
                }


                byte nodeInfoLength = 0;

                if (res.Length > 3)
                {
                    nodeInfoLength = res[3];
                }

                if (nodeInfoLength > 3)
                {
                    SpecificResult.CommandClasses = new byte[nodeInfoLength - 3];
                }

                for (int i = 0; i < nodeInfoLength; i++)
                {
                    byte value = res[4 + i];
                    switch (i)
                    {
                    case 0:
                        SpecificResult.Basic = value;
                        break;

                    case 1:
                        SpecificResult.Generic = value;
                        break;

                    case 2:
                        SpecificResult.Specific = value;
                        break;

                    default:
                        SpecificResult.CommandClasses[i - 3] = value;
                        break;
                    }
                }
            }
            NodeStatusCallback(NodeStatus);
        }
Beispiel #2
0
 private void OnNodeStatus(NodeStatuses nodeStatus)
 {
     if (nodeStatus == NodeStatuses.AddingRemovingController || nodeStatus == NodeStatuses.AddingRemovingSlave)
     {
         _peerFilter.SetFilterNodeId(_removeNode.SpecificResult.Id);
     }
     if (_nodeStatusCallback != null)
     {
         _nodeStatusCallback(nodeStatus);
     }
 }
Beispiel #3
0
 private void OnNodeStatus(NodeStatuses nodeStatus)
 {
     if (nodeStatus == NodeStatuses.AddingRemovingController || nodeStatus == NodeStatuses.AddingRemovingSlave || nodeStatus == NodeStatuses.Done)
     {
         if (_addNode is ReplaceFailedNodeOperation)
         {
             _addNode.SpecificResult.AddRemoveNodeStatus = AddRemoveNodeStatuses.Replaced;
         }
         _peerFilter.SetFilterNodeId(_addNode.SpecificResult.Id);
     }
     if (_nodeStatusCallback != null)
     {
         _nodeStatusCallback(nodeStatus);
     }
 }
Beispiel #4
0
        protected void ParseHandler(DataReceivedUnit ou)
        {
            byte[] res = ou.DataFrame.Payload;
            SequenceNumber = res[0];
            NodeStatus     = (NodeStatuses)res[1];
            if (NodeStatus == NodeStatuses.AddingRemovingController || NodeStatus == NodeStatuses.AddingRemovingSlave)
            {
                if (NodeStatus == NodeStatuses.AddingRemovingSlave)
                {
                    SpecificResult.IsSlave = true; //set isController bit
                }
                if (res.Length > 2)
                {
                    SpecificResult.Id = res[2];
                }
                if (res.Length > 4)
                {
                    SpecificResult.Basic = res[4];
                }
                if (res.Length > 5)
                {
                    SpecificResult.Generic = res[5];
                }
                if (res.Length > 6)
                {
                    SpecificResult.Specific = res[6];
                }
                if (res.Length > 7)
                {
                    SpecificResult.CommandClasses = res.Skip(7).TakeWhile(x => x != 0xEF).ToArray();
                }

                if (NodesBefore != null && NodesBefore.Contains(SpecificResult.Id))
                {
                    SpecificResult.AddRemoveNodeStatus = AddRemoveNodeStatuses.Replicated;
                }
                else
                {
                    SpecificResult.AddRemoveNodeStatus = AddRemoveNodeStatuses.Added;
                }
            }
            NodeStatusCallback(NodeStatus);
        }