コード例 #1
0
        private bool VerifyGraphSyncData(IEnumerable <NodeModel> nodes)
        {
            GraphSyncData data = syncDataManager.GetSyncData();

            syncDataManager.ResetStates();

            var reExecuteNodesIds = new HashSet <Guid>(
                nodes.Where(n => n.ForceReExecuteOfNode)
                .Select(n => n.GUID));

            if (reExecuteNodesIds.Any() && data.ModifiedSubtrees != null)
            {
                for (int i = 0; i < data.ModifiedSubtrees.Count; ++i)
                {
                    var st = data.ModifiedSubtrees[i];
                    if (reExecuteNodesIds.Contains(st.GUID))
                    {
                        var newSt = new Subtree(st.AstNodes, st.GUID)
                        {
                            ForceExecution = true
                        };
                        data.ModifiedSubtrees[i] = newSt;
                    }
                }
            }

            if ((data.AddedSubtrees != null && data.AddedSubtrees.Count > 0) ||
                (data.ModifiedSubtrees != null && data.ModifiedSubtrees.Count > 0) ||
                (data.DeletedSubtrees != null && data.DeletedSubtrees.Count > 0))
            {
                lock (graphSyncDataQueue)
                {
                    graphSyncDataQueue.Enqueue(data);
                }
                return(true);
            }

            return(false);
        }
コード例 #2
0
        private bool VerifyGraphSyncData()
        {
            GraphSyncData data = syncDataManager.GetSyncData();

            syncDataManager.ResetStates();

            var reExecuteNodesIds = dynamoModel.HomeSpace.Nodes
                                    .Where(n => n.ForceReExecuteOfNode)
                                    .Select(n => n.GUID);

            if (reExecuteNodesIds.Any() && data.ModifiedSubtrees != null)
            {
                for (int i = 0; i < data.ModifiedSubtrees.Count; ++i)
                {
                    var st = data.ModifiedSubtrees[i];
                    if (reExecuteNodesIds.Contains(st.GUID))
                    {
                        Subtree newSt = new Subtree(st.AstNodes, st.GUID);
                        newSt.ForceExecution     = true;
                        data.ModifiedSubtrees[i] = newSt;
                    }
                }
            }

            if ((data.AddedSubtrees != null && data.AddedSubtrees.Count > 0) ||
                (data.ModifiedSubtrees != null && data.ModifiedSubtrees.Count > 0) ||
                (data.DeletedSubtrees != null && data.DeletedSubtrees.Count > 0))
            {
                lock (graphSyncDataQueue)
                {
                    graphSyncDataQueue.Enqueue(data);
                }
                return(true);
            }

            return(false);
        }