diff --git a/util/blueprint/blueprint.go b/util/blueprint/blueprint.go index 40e9587..9770098 100644 --- a/util/blueprint/blueprint.go +++ b/util/blueprint/blueprint.go @@ -187,9 +187,12 @@ func (bm *Blueprint) Do(graphID int64, entranceID int64, args ...any) (Port_Arra return nil, fmt.Errorf("can not find graph:%d", graphID) } - return graph.Do(entranceID, args...) + clone := graph.Clone() + return clone.Do(entranceID, args...) } + + func (bm *Blueprint) ReleaseGraph(graphID int64) { if graphID == 0 { return diff --git a/util/blueprint/graph.go b/util/blueprint/graph.go index 9413e96..a7fa42e 100644 --- a/util/blueprint/graph.go +++ b/util/blueprint/graph.go @@ -18,6 +18,7 @@ type IGraph interface { Release() GetGraphFileName() string HotReload(newBaseGraph *baseGraph) + Clone() IGraph } type IBlueprintModule interface { @@ -168,7 +169,7 @@ func (gr *Graph) Do(entranceID int64, args ...any) (Port_Array, error) { if gr.globalVariables == nil { gr.globalVariables = map[string]IPort{} - }else { + } else { gr.globalVariables[ReturnVarial] = nil } @@ -226,6 +227,11 @@ func (gr *Graph) HotReload(newBaseGraph *baseGraph) { gr.baseGraph = newBaseGraph } -func (gr *Graph) GetGraphFileName() string{ +func (gr *Graph) GetGraphFileName() string { return gr.graphFileName } + +func (gr *Graph) Clone() IGraph { + cloneGr := *gr + return &cloneGr +}