diff --git a/src/services/DFGVariable.jl b/src/services/DFGVariable.jl index 9ca42c2e..c04a491f 100644 --- a/src/services/DFGVariable.jl +++ b/src/services/DFGVariable.jl @@ -733,6 +733,27 @@ function mergeVariableState!(v::VariableCompute, vnd::VariableState) return 1 end +function mergeVariableStates!( + dfg::AbstractDFG, + varLabel_state_pairs::Vector{<:Pair{Symbol, <:VariableState}}, +) + cnt = asyncmap(varLabel_state_pairs) do (varLabel, state) + return mergeVariableState!(dfg, varLabel, state) + end + return sum(cnt) +end + +function mergeVariableStates!( + dfg::AbstractDFG, + variableLabel::Symbol, + states::Vector{<:VariableState}, +) + cnt = asyncmap(states) do state + return mergeVariableState!(dfg, variableLabel, state) + end + return sum(cnt) +end + function copytoVariableState!( dfg::AbstractDFG, variableLabel::Symbol, diff --git a/test/testBlocks.jl b/test/testBlocks.jl index ba484c80..957705da 100644 --- a/test/testBlocks.jl +++ b/test/testBlocks.jl @@ -792,8 +792,8 @@ function VSDTestBlock!(fg, v1) @test mergeVariableState!(fg, :a, vnd) == 1 # Bulk copy update x0 - @test updateVariableSolverData!(fg, [v1], :default) == nothing - + @test DFG.mergeVariableStates!(fg, [:a=>vnd]) == 1 + @test DFG.mergeVariableStates!(fg, :a, [vnd]) == 1 altVnd = vnd |> deepcopy keepVnd = getVariableState(getVariable(fg, :a), :parametric) |> deepcopy altVnd.infoPerCoord .= [-99.0;]