aboutsummaryrefslogtreecommitdiffstats
path: root/lib/lkn/core/puppeteer.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/lkn/core/puppeteer.ex')
-rw-r--r--lib/lkn/core/puppeteer.ex13
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/lkn/core/puppeteer.ex b/lib/lkn/core/puppeteer.ex
index 6433b49..f362c4f 100644
--- a/lib/lkn/core/puppeteer.ex
+++ b/lib/lkn/core/puppeteer.ex
@@ -127,6 +127,14 @@ defmodule Lkn.Core.Puppeteer do
{:noreply, state}
end
end
+ def handle_cast({:instance_digest, instance_key, map, puppets}, state) do
+ if state.instance_key == Lkn.Prelude.Option.some(instance_key) do
+ s2 = instance_digest(state.state, instance_key, map, puppets)
+ {:noreply, %State{state|state: s2}}
+ else
+ {:noreply, state}
+ end
+ end
def handle_cast({:leave_instance, instance_key}, state) do
if state.instance_key == Lkn.Prelude.Option.some(instance_key) do
s2 = leave_instance(state.state, instance_key)
@@ -184,6 +192,7 @@ defmodule Lkn.Core.Puppeteer do
@callback puppet_enter(s :: state, instance_key :: Lkn.Core.Instance.k, puppet_key :: Lkn.Core.Puppet.k, digest :: Lkn.Core.Entity.digest) :: state
@callback puppet_leave(s :: state, instance_key :: Lkn.Core.Instance.k, puppet_key :: Lkn.Core.Puppet.k) :: state
@callback destroy(puppeteer_key :: k, s :: state, instance_key :: Option.t(Lkn.Core.Instance.k), reason :: any) :: term
+ @callback instance_digest(s :: state, instance_key :: Lkn.Core.Instance, map :: Lkn.Core.Entity.digest, puppets :: Lkn.Core.Entity.digest) :: state
@spec leave_instance(k, Instance.k) :: :ok
def leave_instance(puppeteer_key, instance_key) do
@@ -195,6 +204,10 @@ defmodule Lkn.Core.Puppeteer do
GenServer.call(Name.puppeteer(puppeteer_key), {:find_instance, map_key})
end
+ def instance_digest(puppeteer_key, instance_key, map, puppets) do
+ GenServer.cast(Name.puppeteer(puppeteer_key), {:instance_digest, instance_key, map, puppets})
+ end
+
def puppet_enter(puppeteer_key, instance_key, puppet_key, digest) do
GenServer.cast(Name.puppeteer(puppeteer_key), {:puppet_enter, instance_key, puppet_key, digest})
end