%%%------------------------------------------------------------------- %%% @author Heinz Nikolaus Gies %%% @copyright (C) 2013, Heinz Nikolaus Gies %%% @doc %%% %%% @end %%% Created : 10 Jan 2013 by Heinz Nikolaus Gies %%%------------------------------------------------------------------- -module(fifo_db_sup). -behaviour(supervisor). %% API -export([start_link/0, start_child/1, start_child/2, start_child/3]). %% Supervisor callbacks -export([init/1]). -ignore_xref([start_link/0]). -define(SERVER, ?MODULE). %%%=================================================================== %%% API functions %%%=================================================================== start_child(Name) -> start_child(Name, []). start_child(Name, Opts) -> {ok, Backend} = application:get_env(fifo_db, backend), start_child(Name, Backend, Opts). start_child(Name, Backend, Opts) -> supervisor:start_child(?SERVER, [Name, Backend, Opts]). %%-------------------------------------------------------------------- %% @doc %% Starts the supervisor %% %% @spec start_link() -> {ok, Pid} | ignore | {error, Error} %% @end %%-------------------------------------------------------------------- start_link() -> supervisor:start_link({local, ?SERVER}, ?MODULE, []). %%%=================================================================== %%% 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([]) -> RestartStrategy = simple_one_for_one, MaxRestarts = 1000, MaxSecondsBetweenRestarts = 3600, SupFlags = {RestartStrategy, MaxRestarts, MaxSecondsBetweenRestarts}, Restart = permanent, Shutdown = 2000, Type = worker, AChild = {fifo_db, {fifo_db, start_link, []}, Restart, Shutdown, Type, [fifo_db]}, {ok, {SupFlags, [AChild]}}. %%%=================================================================== %%% Internal functions %%%===================================================================