Current section
Files
Jump to
Current section
Files
lib/agent/registry_proxy.ex
defmodule Dialup.Agent.RegistryProxy do
@moduledoc false
use GenServer
def start_link(session_pid, token) do
GenServer.start_link(__MODULE__, {session_pid, token})
end
@impl GenServer
def init({session_pid, token}) do
:yes = :global.register_name({Dialup.Agent, token}, self())
ref = Process.monitor(session_pid)
{:ok, %{session_pid: session_pid, ref: ref}}
end
@impl GenServer
def handle_call(:session_pid, _from, state), do: {:reply, state.session_pid, state}
@impl GenServer
def handle_info({:DOWN, ref, :process, _pid, _reason}, %{ref: ref} = state) do
{:stop, :normal, state}
end
end