Current section
Files
Jump to
Current section
Files
lib/supervisor.ex
defmodule Kadabra.Supervisor do
@moduledoc false
use Supervisor
import Supervisor.Spec
alias Kadabra.{ConnectionSupervisor, StreamSupervisor}
def start_link(uri, pid, opts) do
ref = :erlang.make_ref
Supervisor.start_link(__MODULE__, {uri, pid, ref, opts})
end
def via_tuple(ref) do
{:via, Registry, {Registry.Kadabra, {ref, __MODULE__}}}
end
def init({uri, pid, ref, opts}) do
children = [
supervisor(StreamSupervisor, [ref], id: :stream_sup),
supervisor(ConnectionSupervisor, [uri, pid, self(), ref, opts], id: :connection_sup)
]
supervise(children, strategy: :one_for_one)
end
end