Packages

Running at most one process on the OTP cluster with a distributed supervisor.

Current section

Files

Jump to
island lib island.ex
Raw

lib/island.ex

defmodule Island do
use Application
@type spec() :: module() | {module(), args :: term()}
@impl Application
def start(_type, _args) do
children = [
Island.ProcessCoordinator.child_spec([]),
Island.Supervisor.child_spec([]),
Island.NodeServer.child_spec([])
]
options = [
strategy: :one_for_all,
name: IslandSupervisor
]
Supervisor.start_link(children, options)
end
@spec register(spec()) :: :ok | {:error, term()}
defdelegate register(spec), to: Island.ProcessCoordinator
@spec deregister(spec()) :: :ok | {:error, term()}
defdelegate deregister(spec), to: Island.ProcessCoordinator
@spec get_leader_node() :: Island.NodeServer.leader_node() | term()
defdelegate get_leader_node(), to: Island.NodeServer
end