summaryrefslogtreecommitdiff
path: root/src/simplec_sup.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/simplec_sup.erl')
-rw-r--r--src/simplec_sup.erl67
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
+%%%===================================================================