defmodule WalEx.Registry do @walex_registry :walex_registry def start_registry do case Process.whereis(@walex_registry) do nil -> Registry.start_link(keys: :unique, name: @walex_registry) pid -> {:ok, pid} end end def set_name(:set_agent, module, app_name), do: set_name(module, app_name) def set_name(:set_gen_server, module, app_name), do: set_name(module, app_name) def set_name(:set_supervisor, module, app_name), do: {:via, module, app_name} defp set_name(module, app_name), do: {:via, Registry, {@walex_registry, {module, app_name}}} def get_state(:get_agent, module, app_name) do Agent.get({:via, Registry, {:walex_registry, {module, app_name}}}, & &1) end end