%%%------------------------------------------------------------------- %% @doc grisp_connect top level supervisor. %% @end %%%------------------------------------------------------------------- -module(grisp_connect_sup). -behaviour(supervisor). %--- Exports ------------------------------------------------------------------- % API Functions -export([start_link/0]). % Behaviour supervisor Callback Functions -export([init/1]). %--- Macros -------------------------------------------------------------------- -define(SERVER, ?MODULE). %--- API Functions ------------------------------------------------------------- start_link() -> supervisor:start_link({local, ?SERVER}, ?MODULE, []). %--- Behaviour supervisor Callback Functions ----------------------------------- init([]) -> SupFlags = #{ strategy => one_for_all }, NTP = case application:get_env(grisp_connect, ntp) of {ok, true} -> [worker(grisp_connect_ntp, [])]; {ok, false} -> [] end, ChildSpecs = NTP ++ [ worker(grisp_connect_cluster, []), worker(grisp_connect_client, []) ], {ok, {SupFlags, ChildSpecs}}. %% internal functions worker(Module, Args) -> #{id => Module, start => {Module, start_link, Args}, type => worker}.