aboutsummaryrefslogtreecommitdiffstats
path: root/lib/lkn/core/instance.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/lkn/core/instance.ex')
-rw-r--r--lib/lkn/core/instance.ex12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/lkn/core/instance.ex b/lib/lkn/core/instance.ex
index 4e8b93e..2b42c01 100644
--- a/lib/lkn/core/instance.ex
+++ b/lib/lkn/core/instance.ex
@@ -283,7 +283,17 @@ defmodule Lkn.Core.Instance do
end
def handle_call({:register_puppeteer, puppeteer_key, puppeteer_module}, _from, state) do
if !State.closed?(state) do
- {:reply, true, State.register_puppeteer(state, puppeteer_key, puppeteer_module)}
+ # we remember this new puppeteer
+ s2 = State.register_puppeteer(state, puppeteer_key, puppeteer_module)
+
+ # we compute a digest of the map and each puppets
+ map = Lkn.Core.Entity.digest(state.map_key)
+ puppets = Enum.map(state.puppets, &Lkn.Core.Entity.digest(&1))
+
+ # we send these digest to our new friend the puppeteer
+ Lkn.Core.Puppeteer.instance_digest(puppeteer_key, state.instance_key, map, puppets)
+
+ {:reply, true, s2}
else
{:reply, false, state}
end