Starts a module-based dynamic supervisor process with a registered name. Will wait a bit if the supervisor name is still registered on restarts. See Supervisor restart backoff.
Summary
Functions
Uses DynamicSupervisor. Also either aliases DynamicSupervisor.Proxy (this
module) and requires the alias or imports DynamicSupervisor.Proxy. Finally,
it will inject the default implementation of the DynamicSupervisor.init/1
callback.
Starts a module-based dynamic supervisor process with the given module and
init_arg. The :name option must be specified in order to register a
supervisor name. Will wait a bit if the supervisor name is still registered
on restarts. See Supervisor restart backoff.
Functions
Uses DynamicSupervisor. Also either aliases DynamicSupervisor.Proxy (this
module) and requires the alias or imports DynamicSupervisor.Proxy. Finally,
it will inject the default implementation of the DynamicSupervisor.init/1
callback.
Examples
use DynamicSupervisor.Proxy, alias: Proxy
use DynamicSupervisor.Proxy
Starts a module-based dynamic supervisor process with the given module and
init_arg. The :name option must be specified in order to register a
supervisor name. Will wait a bit if the supervisor name is still registered
on restarts. See Supervisor restart backoff.
To start the supervisor, the DynamicSupervisor.init/1 callback will be
invoked in the given module, with init_arg as its argument. The
DynamicSupervisor.init/1 callback must return a supervisor specification
which can be created with the help of the DynamicSupervisor.init/1 function.
Examples
iex> defmodule DynSupOne do
iex> use DynamicSupervisor.Proxy
iex>
iex> def start_link(:ok), do: start_link(DynSupOne, name: DynSupOne)
iex> end
iex>
iex> children = [{DynSupOne, :ok}]
iex> options = [name: Sup, strategy: :one_for_one]
iex> {:ok, _pid} = Supervisor.start_link(children, options)
iex>
iex> %{active: 1, supervisors: 1} = Supervisor.count_children(Sup)
iex> [{name, pid, :supervisor, [name]}] = Supervisor.which_children(Sup)
iex>
iex> name == DynSupOne and pid == Process.whereis(DynSupOne)
true
iex> defmodule DynSupTwo do
iex> use DynamicSupervisor.Proxy
iex>
iex> def start_link(_), do: start_link(DynSupTwo, ??, name: DynSupTwo)
iex> end
iex>
iex> defmodule DynSupThree do
iex> use DynamicSupervisor.Proxy, alias: Proxy
iex>
iex> def start_link(OK) do
iex> Proxy.start_link(__MODULE__, name: :three)
iex> end
iex> end
iex>
iex> children = [DynSupTwo, {DynSupThree, OK}]
iex> options = [name: Sup, strategy: :one_for_one]
iex> {:ok, _pid} = Supervisor.start_link(children, options)
iex>
iex> %{active: 2, supervisors: 2} = Supervisor.count_children(Sup)
iex> children = Supervisor.which_children(Sup)
iex> pid_two = Process.whereis(DynSupTwo)
iex> pid_three = Process.whereis(:three)
iex>
iex> {DynSupTwo, pid_two, :supervisor, [DynSupTwo]} in children and
...> {DynSupThree, pid_three, :supervisor, [DynSupThree]} in children
true