diff options
Diffstat (limited to 'src/simplec_sup.erl')
-rw-r--r-- | src/simplec_sup.erl | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/simplec_sup.erl b/src/simplec_sup.erl new file mode 100644 index 0000000..f4bc3fa --- /dev/null +++ b/src/simplec_sup.erl @@ -0,0 +1,67 @@ +%%%------------------------------------------------------------------- +%%% @author Guido <agx@bogon.m.sigxcpu.org> +%%% @copyright (C) 2015, Guido Günther +%%% @doc +%%% +%%% @end +%%% Created : 15 Sep 2015 by Guido <agx@sigxcpu.org> +%%%------------------------------------------------------------------- +-module(simplec_sup). + +-behaviour(supervisor). + +%% API +-export([start_link/1]). + +%% Supervisor callbacks +-export([init/1]). + +-define(SERVER, ?MODULE). +%% Helper macro for declaring children of supervisor +-define(CHILD(I, Type), {I, {I, start_link, []}, permanent, 5000, Type, [I]}). +-define(CHILD_WITH_ARGS(I, Type, Args), {I, {I, start_link, [Args]}, permanent, 5000, Type, [I]}). + +%%%=================================================================== +%%% API functions +%%%=================================================================== + +%%-------------------------------------------------------------------- +%% @doc +%% Starts the supervisor +%% +%% @spec start_link() -> {ok, Pid} | ignore | {error, Error} +%% @end +%%-------------------------------------------------------------------- +start_link(Config) -> + supervisor:start_link({local, ?SERVER}, ?MODULE, Config). + +%%%=================================================================== +%%% Supervisor callbacks +%%%=================================================================== + +%%-------------------------------------------------------------------- +%% @private +%% @doc +%% Whenever a supervisor is started using supervisor:start_link/[2,3], +%% this function is called by the new process to find out about +%% restart strategy, maximum restart frequency and child +%% specifications. +%% +%% @spec init(Args) -> {ok, {SupFlags, [ChildSpec]}} | +%% ignore | +%% {error, Reason} +%% @end +%%-------------------------------------------------------------------- +init(Config) -> + RestartStrategy = one_for_one, + MaxRestarts = 1000, + MaxSecondsBetweenRestarts = 3600, + + SupFlags = {RestartStrategy, MaxRestarts, MaxSecondsBetweenRestarts}, + Childs = [?CHILD_WITH_ARGS(simplec_vms, worker, Config), + ?CHILD_WITH_ARGS(simplec_hostsfile, worker, Config)], + {ok, {SupFlags, Childs}}. + +%%%=================================================================== +%%% Internal functions +%%%=================================================================== |