示例#1
0
        public ActionToken IncludeNode(Modes mode, int timeoutMs, Action <IActionItem> completedCallback)
        {
            ResetNodeStatusSignals();
            AddNodeOperation AddNodeOperation = new AddNodeOperation(mode, SetNodeStatusSignal, timeoutMs);

            return(ExecuteAsync(new InclusionTask(Network, AddNodeOperation), completedCallback));
        }
示例#2
0
        public InclusionResult IncludeNode(Modes mode, int timeoutMs)
        {
            ResetNodeStatusSignals();
            AddNodeOperation AddNodeOperation = new AddNodeOperation(mode, SetNodeStatusSignal, timeoutMs);

            return((InclusionResult)Execute(new InclusionTask(Network, AddNodeOperation)));
        }
示例#3
0
        private void OnReceived(DataReceivedUnit unit)
        {
            var payload = ((ApiHandler)unit.ActionHandler).DataFrame.Payload;

            _homeId = new byte[] { payload[3], payload[4], payload[5], payload[6] };
            var dsk = _dskNeededCallback(_homeId);

            if (!_isRunning && dsk != null && dsk.Item2 != null && dsk.Item2.Length >= 16)
            {
                SetRunning();
                byte[] dskPart = new byte[8];
                Array.Copy(dsk.Item2, 8, dskPart, 0, 8);
                IAddRemoveNode addNode = null;
                if (dsk.Item1 > 0)
                {
                    //addNode = new ReplaceFailedNodeOperation(dsk.First, _setNodeStatusSignal, _timeoutMs, dskPart) { SequenceNumber = SequenceNumber, DskValue = dsk.Item2 };
                    addNode = new AddNodeOperation((Modes.NodeOptionNetworkWide | Modes.NodeHomeId), _setNodeStatusSignal, _timeoutMs, dskPart)
                    {
                        SequenceNumber = SequenceNumber, DskValue = dsk.Item2, GrantSchemesValue = dsk.Item3
                    };
                }
                else
                {
                    addNode = new AddNodeOperation((Modes.NodeOptionNetworkWide | Modes.NodeHomeId), _setNodeStatusSignal, _timeoutMs, dskPart)
                    {
                        SequenceNumber = SequenceNumber, DskValue = dsk.Item2, GrantSchemesValue = dsk.Item3
                    };
                }
                var action = new InclusionTask(_network, addNode, true);
                action.CompletedCallback = (x) =>
                {
                    var act = x as ActionBase;
                    if (act != null)
                    {
                        ReleaseRunning();
                        _busyCallback(false, dsk.Item2, act.Result);
                    }
                };
                unit.SetNextActionItems(new ActionSerialGroup(action, new SetSmartStartAction(true)));
                _busyCallback(true, null, null);
            }
            else
            {
                unit.SetNextActionItems(new SetSmartStartAction(true));
            }
        }
示例#4
0
        void ISuperGraphNodeFactory.AddLinkedNode(string nodeType, Point location, Node parent)
        {
            var mapNodeOperation = new AddNodeOperation(nodeType, MapManager, Context.Proxy, location);

            mapNodeOperation.ExecuteOperation();

            if (mapNodeOperation.Response.Nodes.Any())
            {
                var viewModelNode = new Node(MapManager);
                viewModelNode.LoadNode(null, mapNodeOperation.Response.Nodes.First());
                ThemeManager.DressNode(viewModelNode);

                viewModelNode.IsFocused = true;
                viewModelNode.VideoInfo = VideoController.CreateVideoInfoViewModel(viewModelNode);

                viewModelNode.PropertyChanged += ViewModelNode_PropertyChanged;
                viewModelNode.LocationChanged += ViewModelNode_LocationChanged;

                var modelChangedEventArgs = new ModelChangedEventArgs <Node, Relationship>();
                modelChangedEventArgs.Nodes.Add(new KeyValuePair <Node, ModelOperationType>(viewModelNode, ModelOperationType.New));
                ModelChanged(this, modelChangedEventArgs);


                var connectNodesOperation = new ConnectNodesOperation(MapManager);
                connectNodesOperation.From = viewModelNode.Proxy;
                connectNodesOperation.To   = parent.Proxy;
                connectNodesOperation.ExecuteOperation();
                var relationshipModelCHangedEventArgs = new ModelChangedEventArgs <Node, Relationship>();
                foreach (Proxy.IRelationship modelRelationship in connectNodesOperation.Response.Relationships)
                {
                    var viewModelRelationship = new Relationship();
                    viewModelRelationship.LoadRelationship(modelRelationship);
                    relationshipModelCHangedEventArgs.Relationships.Add(new KeyValuePair <Relationship, ModelOperationType>(viewModelRelationship, ModelOperationType.New));
                }
                ModelChanged(this, relationshipModelCHangedEventArgs);
            }
        }