1
%% ``The contents of this file are subject to the Erlang Public License,
2
%% Version 1.1, (the "License"); you may not use this file except in
3
%% compliance with the License. You should have received a copy of the
4
%% Erlang Public License along with this software. If not, it can be
5
%% retrieved via the world wide web at http://www.erlang.org/.
7
%% Software distributed under the License is distributed on an "AS IS"
8
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
9
%% the License for the specific language governing rights and limitations
12
%% The Initial Developer of the Original Code is Ericsson Utvecklings AB.
13
%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
14
%% AB. All Rights Reserved.''
16
%% $Id: httpd_acceptor_sup.erl,v 1.1 2008/12/17 09:53:33 mikpe Exp $
18
%%----------------------------------------------------------------------
19
%% Purpose: The top supervisor for the Megaco/H.248 application
20
%%----------------------------------------------------------------------
22
-module(httpd_acceptor_sup).
24
-behaviour(supervisor).
26
-include("httpd_verbosity.hrl").
29
-export([start/3, stop/1, init/1]).
31
-export([start_acceptor/4, stop_acceptor/2]).
34
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
35
%% supervisor callback functions
38
start(Addr, Port, AccSupVerbosity) ->
39
SupName = make_name(Addr, Port),
40
supervisor:start_link({local, SupName}, ?MODULE, [AccSupVerbosity]).
45
init([Verbosity]) -> % Supervisor
48
{error, {badarg, BadArg}}.
51
put(verbosity,?vvalidate(Verbosity)),
53
?vlog("starting", []),
54
Flags = {one_for_one, 500, 100},
55
KillAfter = timer:seconds(1),
57
{ok, {Flags, Workers}}.
60
%%----------------------------------------------------------------------
61
%% Function: [start|stop]_acceptor/5
62
%% Description: Starts a [auth | security] worker (child) process
63
%%----------------------------------------------------------------------
65
start_acceptor(SocketType, Addr, Port, ConfigDb) ->
66
Verbosity = get_acc_verbosity(),
67
start_worker(httpd_acceptor, SocketType, Addr, Port,
68
ConfigDb, Verbosity, self(), []).
70
stop_acceptor(Addr, Port) ->
71
stop_worker(httpd_acceptor, Addr, Port).
74
%%----------------------------------------------------------------------
75
%% Function: start_worker/5
76
%% Description: Starts a (permanent) worker (child) process
77
%%----------------------------------------------------------------------
79
start_worker(M, SocketType, Addr, Port, ConfigDB, Verbosity, Manager,
81
SupName = make_name(Addr, Port),
82
Args = [Manager, SocketType, Addr, Port, ConfigDB, Verbosity],
83
Spec = {{M, Addr, Port},
84
{M, start_link, Args},
85
permanent, timer:seconds(1), worker, [M] ++ Modules},
86
supervisor:start_child(SupName, Spec).
89
%%----------------------------------------------------------------------
90
%% Function: stop_permanent_worker/3
91
%% Description: Stops a permanent worker (child) process
92
%%----------------------------------------------------------------------
94
stop_worker(M, Addr, Port) ->
95
SupName = make_name(Addr, Port),
96
Name = {M, Addr, Port},
97
case supervisor:terminate_child(SupName, Name) of
99
supervisor:delete_child(SupName, Name);
105
make_name(Addr,Port) ->
106
httpd_util:make_name("httpd_acc_sup",Addr,Port).
110
get_acc_verbosity() ->
111
get_verbosity(get(acceptor_verbosity)).
113
get_verbosity(undefined) ->