Current section

Files

Jump to
pi_bridge lib pi process_owner.ex
Raw

lib/pi/process_owner.ex

defmodule Pi.ProcessOwner do
@moduledoc false
def register(key, owner) when is_pid(owner) do
:persistent_term.put(owner_key(key), owner)
:ok
end
def unregister(key, owner) when is_pid(owner) do
if :persistent_term.get(owner_key(key), nil) == owner do
:persistent_term.erase(owner_key(key))
end
:ok
end
def notify(key, message) do
case :persistent_term.get(owner_key(key), nil) do
owner when is_pid(owner) -> send(owner, message)
nil -> :ok
end
:ok
end
defp owner_key(key), do: {__MODULE__, key}
end