| %% @copyright 2017 Takeru Ohta <phjgt308@gmail.com> |
| %% |
| %% @private |
| -module(jaeger_passage_reporter_sup). |
| |
| -behaviour(supervisor). |
| |
| %%------------------------------------------------------------------------------ |
| %% Application Internal API |
| %%------------------------------------------------------------------------------ |
| -export([start_link/0]). |
| -export([start_child/2]). |
| -export([stop_child/1]). |
| -export([which_children/0]). |
| |
| %%------------------------------------------------------------------------------ |
| %% 'supervisor' Callback API |
| %%------------------------------------------------------------------------------ |
| -export([init/1]). |
| |
| %%------------------------------------------------------------------------------ |
| %% Application Internal Functions |
| %%------------------------------------------------------------------------------ |
| -spec start_link() -> {ok, pid()} | {error, Reason :: term()}. |
| start_link() -> |
| supervisor:start_link({local, ?MODULE}, ?MODULE, []). |
| |
| -spec start_child(ReporterId, Options) -> {ok, pid()} | {error, Reason} when |
| ReporterId :: jaeger_passage_reporter:reporter_id(), |
| Options :: jaeger_passage_reporter:start_options(), |
| Reason :: {already_started, pid()} | term(). |
| start_child(ReporterId, Options) -> |
| Child = #{ |
| id => ReporterId, |
| start => {jaeger_passage_reporter, start_link, [ReporterId, Options]}, |
| restart => permanent |
| }, |
| supervisor:start_child(?MODULE, Child). |
| |
| -spec stop_child(jaeger_passage_reporter:reporter_id()) -> ok. |
| stop_child(ReporterId) -> |
| _ = supervisor:terminate_child(?MODULE, ReporterId), |
| _ = supervisor:delete_child(?MODULE, ReporterId), |
| ok. |
| |
| -spec which_children() -> [jaeger_passage_reporter:reporter_id()]. |
| which_children() -> |
| [Id || {Id, _, _, _} <- supervisor:which_children(?MODULE)]. |
| |
| %%------------------------------------------------------------------------------ |
| %% 'supervisor' Callback Functions |
| %%------------------------------------------------------------------------------ |
| init([]) -> |
| {ok, {#{}, []}}. |