示例#1
0
        public ExclusionTask(Modes mode, Action <NodeStatuses> nodeStatusCallback, int timeoutMs)
            : base(false, null)
        {
            _mode = mode;
            _nodeStatusCallback = nodeStatusCallback;
            _timeoutMs          = timeoutMs;

            _peerFilter = new FilterAchOperation();
            _peerFilter.SetFilterNodeId(0xFF);
            _removeNode = new RemoveNodeOperation(_mode, OnNodeStatus, _timeoutMs);

            SpecificResult.AddRemoveNode = _removeNode.SpecificResult;

            Actions = new ActionBase[]
            {
                _peerFilter,
                _removeNode
            };
        }
示例#2
0
        public InclusionTask(NetworkViewPoint network, IAddRemoveNode addRemoveNode, bool IsSmartStart)
            : base(false, null)
        {
            _network      = network;
            _isSmartStart = IsSmartStart;
            if (addRemoveNode is AddNodeOperation)
            {
                _mode = (addRemoveNode as AddNodeOperation).InitMode;
                _nodeStatusCallback = (addRemoveNode as AddNodeOperation).NodeStatusCallback;
                _timeoutMs          = (addRemoveNode as AddNodeOperation).TimeoutMs;
            }
            else
            {
                _mode      = Modes.NodeAny;
                _timeoutMs = TIMEOUT;
            }

            _peerFilter = new FilterAchOperation();
            _peerFilter.SetFilterNodeId(0xFF);
            _addNode = addRemoveNode;
            _addNode.NodeStatusCallback = OnNodeStatus;

            _memoryGetId = new MemoryGetIdOperation();

            _getSucNodeId             = new GetSucNodeIdOperation();
            _isFailedSucNodeOperation = new IsFailedNodeOperation(0);
            _getSucNodeInfo           = new RequestNodeInfoOperation(0);
            _requestSucNodeInfoGroup  = new ActionSerialGroup(OnSucNodeInfoCompletedGroup, _getSucNodeId, _isFailedSucNodeOperation, _getSucNodeInfo)
            {
                Name = "RequestSucNodeInfoGroup (InclusionController)",
                CompletedCallback = OnRequestSucNodeInfoGroupCompleted
            };

            _setupNodeLifelineTask = new SetupNodeLifelineTask(_network);

            _requestInclusionController = new InclusionController.Initiate(0, 0, _txOptions, 240000)
            {
                Name = "ReguestData (InclusionController)"
            };
            _serialApiGetInitData = new SerialApiGetInitDataOperation();

            SpecificResult.AddRemoveNode     = _addNode.SpecificResult;
            SpecificResult.MemoryGetId       = _memoryGetId.SpecificResult;
            SpecificResult.GetSucNodeId      = _getSucNodeId.SpecificResult;
            SpecificResult.NodeInfo          = _setupNodeLifelineTask.SpecificResult.NodeInfo;
            SpecificResult.SetWakeUpInterval = _setupNodeLifelineTask.SpecificResult.SetWakeUpInterval;

            _isFailedNodeOperation       = new IsFailedNodeOperation(_addNode.SpecificResult.Id);
            _removeFailedNodeIdOperation = new RemoveFailedNodeIdOperation(_addNode.SpecificResult.Id);
            if (!_isSmartStart)
            {
                _isFailedNodeOperation.Token.SetCancelled();
                _removeFailedNodeIdOperation.Token.SetCancelled();
            }

            Actions = new ActionBase[]
            {
                _peerFilter,
                new ActionSerialGroup(OnActionCompleted,
                                      _memoryGetId,
                                      _requestSucNodeInfoGroup,
                                      _serialApiGetInitData,
                                      (ActionBase)_addNode,
                                      _isFailedNodeOperation,
                                      _removeFailedNodeIdOperation,
                                      _requestInclusionController,
                                      _setupNodeLifelineTask
                                      )
                {
                    Name = "Inclusion (Group)"
                }
            };
        }