diff options
Diffstat (limited to 'lib/megaco/test/megaco_test_deliver.erl')
-rw-r--r-- | lib/megaco/test/megaco_test_deliver.erl | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/lib/megaco/test/megaco_test_deliver.erl b/lib/megaco/test/megaco_test_deliver.erl new file mode 100644 index 0000000000..2d0f0c1cbe --- /dev/null +++ b/lib/megaco/test/megaco_test_deliver.erl @@ -0,0 +1,188 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2007-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: This module takes the role of the main megaco module for +%% the transport module. It is used when delivering +%% received messages. The purpose is to be able to do +%% various forms of filtering before passing the message +%% the the megaco stack (by calling the megaco module). +%% It can be controlled with the following flags: +%% allow_recv_message - Shall the received message be +%% delivered. +%% extra_transport_info - Provide extra info from the transport +%% module. +%%---------------------------------------------------------------------- +-module(megaco_test_deliver). + + +%%---------------------------------------------------------------------- +%% Include files +%%---------------------------------------------------------------------- +-include_lib("megaco/src/udp/megaco_udp.hrl"). +-include("megaco_test_lib.hrl"). + + +%%---------------------------------------------------------------------- +%% External exports +%%---------------------------------------------------------------------- +-export([ + process_received_message/4, process_received_message/5, + receive_message/4, receive_message/5 + ]). + + + +%%====================================================================== +%% External functions +%%====================================================================== + +process_received_message(ReceiveHandle, ControlPid, SendHandle, BinMsg) -> + i("process_received_message -> entry with" + "~n ReceiveHandle: ~p" + "~n ControlPid: ~p" + "~n SendHandle: ~p", + [ReceiveHandle, ControlPid, SendHandle]), + case allow_recv_message() of + true -> + i("process_received_message -> allowed recv msg"), + case extra_transport_info() of + {value, Extra} -> + i("process_received_message -> extra_transport_info: " + "~n Extra: ~p", [Extra]), + megaco:process_received_message(ReceiveHandle, ControlPid, + SendHandle, BinMsg, + Extra); + _ -> + i("process_received_message -> no extra_transport_info"), + megaco:process_received_message(ReceiveHandle, ControlPid, + SendHandle, BinMsg) + end; + false -> + i("process_received_message -> recv msg not allowed"), + ok; + {false, Reason} -> + i("process_received_message -> recv msg not allowed" + "~n Reason: ~p", [Reason]), + exit(Reason) + end. + + +process_received_message(ReceiveHandle, ControlPid, SendHandle, BinMsg, Extra) -> + i("process_received_message -> entry with" + "~n ReceiveHandle: ~p" + "~n ControlPid: ~p" + "~n SendHandle: ~p" + "~n Extra: ~p", + [ReceiveHandle, ControlPid, SendHandle, Extra]), + case allow_recv_message() of + true -> + i("process_received_message -> allowed recv msg"), + megaco:process_received_message(ReceiveHandle, ControlPid, + SendHandle, BinMsg, + Extra); + false -> + i("process_received_message -> recv msg not allowed"), + ok; + {false, Reason} -> + i("process_received_message -> recv msg not allowed" + "~n Reason: ~p", [Reason]), + exit(Reason) + end. + +receive_message(ReceiveHandle, ControlPid, SendHandle, BinMsg) -> + i("receive_message -> entry with" + "~n ReceiveHandle: ~p" + "~n ControlPid: ~p" + "~n SendHandle: ~p", + [ReceiveHandle, ControlPid, SendHandle]), + case allow_recv_message() of + true -> + i("receive_message -> allowed recv msg"), + case extra_transport_info() of + {value, Extra} -> + i("receive_message -> extra_transport_info: " + "~n Extra: ~p", [Extra]), + megaco:receive_message(ReceiveHandle, ControlPid, + SendHandle, BinMsg, Extra); + _ -> + i("receive_message -> no extra_transport_info"), + megaco:receive_message(ReceiveHandle, ControlPid, + SendHandle, BinMsg) + end; + false -> + i("receive_message -> recv msg not allowed"), + ok; + {false, Reason} -> + i("receive_message -> recv msg not allowed" + "~n Reason: ~p", [Reason]), + exit(Reason) + end. + +receive_message(ReceiveHandle, ControlPid, SendHandle, BinMsg, Extra) -> + i("receive_message -> entry with" + "~n ReceiveHandle: ~p" + "~n ControlPid: ~p" + "~n SendHandle: ~p" + "~n Extra: ~p", + [ReceiveHandle, ControlPid, SendHandle, Extra]), + case allow_recv_message() of + true -> + i("receive_message -> allowed recv msg"), + megaco:receive_message(ReceiveHandle, ControlPid, + SendHandle, BinMsg, + Extra); + false -> + i("receive_message -> recv msg not allowed"), + ok; + {false, Reason} -> + i("receive_message -> recv msg not allowed" + "~n Reason: ~p", [Reason]), + exit(Reason) + end. + + +%%====================================================================== +%% Internal functions +%%====================================================================== + +allow_recv_message() -> + case megaco_tc_controller:lookup(allow_recv_message) of + {error, _} -> + true; + {value, Else} -> + Else; + false -> + true + end. + +extra_transport_info() -> + case megaco_tc_controller:lookup(extra_transport_info) of + {error, _} -> + false; + Else -> + Else + end. + +i(F) -> + i(F, []). + +i(F, A) -> + io:format("~p ~w:" ++ F ++ "~n", [self(), ?MODULE | A]). |