%%%---------------------------------------------------------------- %%% @author Tristan Sloughter %%% @doc %%% @end %%% @copyright 2011 Tristan Sloughter %%%---------------------------------------------------------------- -module(epubnub_sup). -behaviour(supervisor). %% API -export([start_link/0, subscribe/2, subscribe/3, unsubscribe/1]). %% Supervisor callbacks -export([init/1]). -define(SERVER, ?MODULE). %%%=================================================================== %%% API functions %%%=================================================================== -spec start_link() -> {ok, pid()} | any(). start_link() -> supervisor:start_link({local, ?SERVER}, ?MODULE, []). subscribe(Channel, Callback) -> supervisor:start_child(?SERVER, [Channel, Callback]). subscribe(EPN, Channel, Callback) -> supervisor:start_child(?SERVER, [EPN, Channel, Callback]). unsubscribe(PID) -> epubnub:unsubscribe(PID). %%%=================================================================== %%% Supervisor callbacks %%%=================================================================== %% @private -spec init(list()) -> {ok, {SupFlags::any(), [ChildSpec::any()]}} | ignore | {error, Reason::any()}. init([]) -> RestartStrategy = simple_one_for_one, MaxRestarts = 0, MaxSecondsBetweenRestarts = 1, SupFlags = {RestartStrategy, MaxRestarts, MaxSecondsBetweenRestarts}, Restart = temporary, Shutdown = 2000, Type = worker, AChild = {subscriber, {epubnub, spawn_subscribe, []}, Restart, Shutdown, Type, [epubnub]}, {ok, {SupFlags, [AChild]}}. %%%=================================================================== %%% Internal functions %%%===================================================================