defmodule Pollin.Backend.Memory.EndpointSupevisor do @moduledoc """ A supervisor for EndpointWorker and CallbackWorker """ use Supervisor alias Pollin.Backend.Memory.CallbackWorker alias Pollin.Backend.Memory.EndpointWorker @doc false def start_link, do: Supervisor.start_link(__MODULE__, [], name: __MODULE__) @doc false def init([]) do children = [worker(EndpointWorker, [], id: make_ref)] opts = [strategy: :one_for_one, name: __MODULE__] supervise(children, opts) end @doc false def start_callback_worker(id) do import Supervisor.Spec, warn: false Supervisor.start_child( __MODULE__, worker(CallbackWorker, [id], id: make_ref)) end end