blob: b0bbbe0699c5998839e654d1566911341fa996b8 [file] [log] [blame]
-module(passage_mailbox_sup).
-behaviour(supervisor).
-export([start_child/1]).
-export([start_link/0]).
-export([init/1]).
-spec start_child(passage:tracer()) -> {ok, pid()} | {error, Reason :: term()}.
start_child(Tracer) ->
Child = make_child_spec(Tracer),
supervisor:start_child(?MODULE, Child).
start_link() ->
supervisor:start_link({local, ?MODULE}, ?MODULE, []).
init([]) ->
Default = make_child_spec(passage_tracer:default_tracer()),
{ok, {#{}, [Default]}}.
-spec make_child_spec(passage:tracer_id()) -> supervisor:child_spec().
make_child_spec(Tracer) ->
#{
id => Tracer,
start => {passage_mailbox, start_link, [Tracer]},
restart => permanent
}.