diff options
Diffstat (limited to 'lib/megaco/src/engine/megaco_trans_sup.erl')
-rw-r--r-- | lib/megaco/src/engine/megaco_trans_sup.erl | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/lib/megaco/src/engine/megaco_trans_sup.erl b/lib/megaco/src/engine/megaco_trans_sup.erl new file mode 100644 index 0000000000..6c4a0b7145 --- /dev/null +++ b/lib/megaco/src/engine/megaco_trans_sup.erl @@ -0,0 +1,88 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2003-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +%% +%%---------------------------------------------------------------------- +%% Purpose: The supervisor for the Megaco/H.248 transaction sender +%% processes. +%%---------------------------------------------------------------------- + +-module(megaco_trans_sup). + +-behaviour(supervisor). + +%% public +-export([start/0, stop/1, init/1]). +-export([start_trans_sender/5]). + +%% -define(d(F,A), io:format("~p~p:" ++ F ++ "~n", [self(),?MODULE|A])). +-define(d(F,A), ok). + +start() -> + ?d("start -> entry",[]), + SupName = {local,?MODULE}, + supervisor:start_link(SupName, ?MODULE, []). + +stop(_StartArgs) -> + ok. + +init([]) -> + init(); +init(BadArg) -> + {error, {badarg, BadArg}}. + +init() -> + ?d("init -> entry",[]), + Flags = {one_for_one, 500, 100}, + Workers = [], + ?d("init -> done",[]), + {ok, {Flags, Workers}}. + + +%%---------------------------------------------------------------------- +%% Function: start_ack_sender/3 +%% Description: Starts a transient worker (child) process +%%---------------------------------------------------------------------- + +start_trans_sender(CH, To, ReqsMaxSz, ReqsMax, AcksMax) -> + ?d("start_ack_sender -> entry with" + "~n CH: ~p" + "~n To: ~p" + "~n ReqsMaxSz: ~p" + "~n ReqsMax: ~p" + "~n AxksMax: ~p", [CH, To, ReqsMaxSz, ReqsMax, AcksMax]), + M = megaco_trans_sender, + F = start_link, + A = [CH, To, ReqsMaxSz, ReqsMax, AcksMax], + N = {M,CH}, + Spec = {N, + {M,F,A}, + temporary, timer:seconds(1), worker, [M,gen_server]}, + case supervisor:start_child(?MODULE, Spec) of + {error, already_present} -> + supervisor:restart_child(?MODULE, N); + Else -> + Else + end. + + + + + + |