Packages
dynamic_supervisor_proxy
0.1.32
0.1.71
0.1.70
0.1.69
0.1.68
0.1.67
0.1.66
0.1.64
0.1.63
0.1.62
0.1.61
0.1.60
0.1.57
0.1.56
0.1.55
0.1.54
0.1.53
0.1.52
0.1.51
0.1.49
0.1.48
0.1.47
0.1.46
0.1.45
0.1.44
0.1.43
0.1.42
0.1.41
0.1.40
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
0.1.31
0.1.30
0.1.29
0.1.28
0.1.27
0.1.26
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Starts a module-based dynamic supervisor process with a registered name. Will wait a bit if the supervisor name is still registered on restarts.
Current section
Files
Jump to
Current section
Files
lib/dynamic_supervisor/proxy.ex
defmodule DynamicSupervisor.Proxy do
@supervisor_restart_backoff "https://github.com/erlang/otp/pull/1287"
@moduledoc """
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](#{@supervisor_restart_backoff}).
"""
@doc """
Uses `DynamicSupervisor`. Also either aliases `DynamicSupervisor.Proxy` (this
module) and requires the alias or imports `DynamicSupervisor.Proxy`.
## Examples
use DynamicSupervisor.Proxy, alias: Proxy
use DynamicSupervisor.Proxy
"""
defmacro __using__(options) do
alias = options[:alias]
if alias do
quote do
use DynamicSupervisor
alias unquote(__MODULE__), as: unquote(alias)
require unquote(alias)
end
else
quote do
use DynamicSupervisor
import unquote(__MODULE__)
end
end
end
@doc """
Starts a module-based dynamic supervisor process with the given `module` and
`init_arg`. The `:name` option __must__ be given in order to register a
supervisor name. Will wait a bit if the supervisor name is still registered
on restarts. See [Supervisor restart backoff](#{@supervisor_restart_backoff}).
To start the supervisor, the `c:DynamicSupervisor.init/1` callback will be
invoked in the given `module`, with `init_arg` as its argument. The
`c:DynamicSupervisor.init/1` callback must return a supervisor specification
which can be created with the help of the `DynamicSupervisor.init/1` function.
## Examples
use DynamicSupervisor.Proxy
@spec start_link(term) :: Supervisor.on_start()
def start_link(:ok), do: start_link(__MODULE__, :ok, name: __MODULE__)
@spec init(term) :: {:ok, DynamicSupervisor.sup_flags()} | :ignore
def init(:ok), do: DynamicSupervisor.init(strategy: :one_for_one)
"""
defmacro start_link(module, init_arg, opts) do
quote bind_quoted: [mod: module, arg: init_arg, opts: opts] do
DynamicSupervisor.Proxy.Starter.start_link(mod, arg, opts)
end
end
end