Ensure that only one instance of a given (supervised) process exists in the cluster.
defmodule Party.Clock do | |
use GenServer | |
def start_link do | |
case GenServer.start_link(__MODULE__, [], name: {:global, __MODULE__}) do | |
{:ok, pid} -> | |
{:ok, pid} | |
{:error, {:already_started, pid}} -> | |
IO.puts("Already started!!") | |
Process.link(pid) | |
{:ok, pid} | |
end | |
end | |
end | |
defmodule Party.Clock.Supervisor do | |
use Supervisor | |
def start_link do | |
Supervisor.start_link(__MODULE__, [], name: __MODULE__) | |
end | |
def init(_) do | |
children = [supervisor(Party.Clock, [])] | |
supervise(children, strategy: :one_for_one) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment