Current section
Files
Jump to
Current section
Files
src/epubnub_sup.erl
%%%----------------------------------------------------------------
%%% @author Tristan Sloughter <tristan.sloughter@gmail.com>
%%% @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
%%%===================================================================