Exemplo n.º 1
0
        /// <summary>
        ///  This is called on the main thread from PreviewGraphSyncData
        ///  to generate the list of node id's that will be executed on the next run
        /// </summary>
        /// <param name="updatedNodes">The updated nodes.</param>
        /// <returns>This method returns the list of all reachable node id's from the given
        /// updated nodes</returns>
        internal List <Guid> PreviewGraphSyncData(IEnumerable <NodeModel> updatedNodes, bool verboseLogging)
        {
            if (updatedNodes == null)
            {
                return(null);
            }

            var activeNodes = updatedNodes.Where(n => n.State != ElementState.Error);

            if (activeNodes.Any())
            {
                astBuilder.CompileToAstNodes(activeNodes, true, verboseLogging);
            }

            GraphSyncData graphSyncdata    = syncDataManager.GetSyncData();
            List <Guid>   previewGraphData = this.liveRunnerServices.PreviewGraph(graphSyncdata, verboseLogging);

            lock (previewGraphQueue)
            {
                previewGraphQueue.Enqueue(previewGraphData);
            }

            return(previewGraphQueue.Dequeue());
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
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);
        }