/
ecallmgr_call_sup.erl
78 lines (65 loc) · 2.51 KB
/
ecallmgr_call_sup.erl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
%%%-------------------------------------------------------------------
%%% @author James Aimonetti <james@2600hz.org>
%%% @copyright (C) 2010, James Aimonetti
%%% @doc
%%% Manage call-specific processes (events and control)
%%% @end
%%% Created : 24 Nov 2010 by James Aimonetti <james@2600hz.org>
%%%-------------------------------------------------------------------
-module(ecallmgr_call_sup).
-behaviour(supervisor).
%% API
-export([start_link/0]).
-export([start_control_process/2, start_control_process/3]).
-export([start_event_process/2]).
%% Supervisor callbacks
-export([init/1]).
-define(SERVER, ?MODULE).
%% supervisors should never die for good
-define(CHILD(Mod, Type), {Mod, {Mod, start_link, []}, permanent, 5000, Type, [Mod]}).
%%%===================================================================
%%% API functions
%%%===================================================================
%%--------------------------------------------------------------------
%% @doc
%% Starts the supervisor
%%
%% @spec start_link() -> {ok, Pid} | ignore | {error, Error}
%% @end
%%--------------------------------------------------------------------
start_link() ->
supervisor:start_link({local, ?SERVER}, ?MODULE, []).
start_event_process(Node, UUID) ->
ecallmgr_call_event_sup:start_proc([Node, UUID]).
start_control_process(Node, UUID) ->
ecallmgr_call_control_sup:start_proc([Node, UUID, undefined]).
start_control_process(Node, UUID, SendTo) ->
ecallmgr_call_control_sup:start_proc([Node, UUID, SendTo]).
%%%===================================================================
%%% 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([]) ->
{ok
,{
{one_for_one, 5, 10}
,[?CHILD(ecallmgr_call_event_sup, supervisor)
,?CHILD(ecallmgr_call_control_sup, supervisor)
]
}
}.
%%%===================================================================
%%% Internal functions
%%%===================================================================