ExReg

Build StatusHex pmhex.pm downloadsDeps StatusInline docs

A simple process name registry using :pg2. Uses :pg2 (running by default when starting the EVM) to associate a name (any Elixir term) to a process.

Example

Defining a simple ping-pong server:

defmodule Server do
  use GenServer

  def start_link(opts \\ []) do
    GenServer.start_link(__MODULE__, nil, opts)
  end

  def stop(name, reason \\ :normal) do
    GenServer.stop(name, reason)
  end

  def ping(name) do
    GenServer.call(name, :ping)
  end

  def handle_call(:ping, _from, _) do
    {:reply, :pong, nil}
  end
end

And using ExReg as name registry:

iex(1)> name = {:name, make_ref()}
iex(2)> Server.start_link({:via, ExReg, name})
iex(3)> Server.ping({:via, ExReg, name})
:pong
iex(4)> Server.stop({:via, ExReg, name})
:ok

Installation

Add ExReg to your list of dependencies in mix.exs:

def deps do
  [{:exreg, "~> 0.0.3"}]
end

Author

Alexander de Sousa

License

ExReg is released under the MIT License. See the LICENSE file for further details.