/// <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()); }
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); }
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); }