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 }; }
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)" } }; }