Current section
Files
Jump to
Current section
Files
src/py_event_worker_sup.erl
%% @doc Supervisor for dynamic event workers.
-module(py_event_worker_sup).
-behaviour(supervisor).
-export([start_link/0, start_worker/2, stop_worker/1]).
-export([init/1]).
start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []).
start_worker(WorkerId, LoopRef) ->
case supervisor:start_child(?MODULE, [WorkerId, LoopRef]) of
{ok, Pid} ->
ok = py_event_worker_registry:register(WorkerId, Pid, LoopRef),
{ok, Pid};
{error, _} = Error -> Error
end.
stop_worker(WorkerPid) ->
supervisor:terminate_child(?MODULE, WorkerPid).
init([]) ->
SupFlags = #{strategy => simple_one_for_one, intensity => 10, period => 60},
WorkerSpec = #{
id => py_event_worker,
start => {py_event_worker, start_link, []},
restart => temporary,
shutdown => 5000,
type => worker,
modules => [py_event_worker]
},
{ok, {SupFlags, [WorkerSpec]}}.