⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 megaco.erl

📁 OTP是开放电信平台的简称
💻 ERL
📖 第 1 页 / 共 2 页
字号:
%% ``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 via the world wide web 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.%%%% The Initial Developer of the Original Code is Ericsson Utvecklings AB.%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings%% AB. All Rights Reserved.''%%%%     $Id$%%%%----------------------------------------------------------------------%% Purpose : Main API for Megaco/H.248 protocol stack%%-----------------------------------------------------------------------module(megaco).%%-----------------------------------------------------------------%% Public interface%%------------------------------------------------------------------export([         start/0,         stop/0,                 start_user/2,         stop_user/1,         user_info/2,         update_user_info/3,         conn_info/2,         update_conn_info/3,         system_info/1,         connect/4,         disconnect/2,         call/3,         cast/3,         cancel/2,         process_received_message/4,         receive_message/4,	 encode_actions/3,	 token_tag2string/1, token_tag2string/2, token_tag2string/3, 	 parse_digit_map/1,	 eval_digit_map/1,	 eval_digit_map/2,	 report_digit_event/2,	 test_digit_event/2,	 encode_binary_term_id/2,	 decode_binary_term_id/2,	 encode_sdp/1,	 decode_sdp/1, 	 versions1/0, versions2/0, 	 print_version_info/0, print_version_info/1, 	 ms/0, nc/0, nc/1, ni/0, ni/1,	 enable_trace/2, disable_trace/0, set_trace/1,	 report_event/4, report_event/5,	 test_request/5,	 test_reply/5        ]).-export([	 get_stats/0, get_stats/1, get_stats/2,	 reset_stats/0, reset_stats/1	]).%% Deprecated-export([format_versions/1]).%% Internal-export([format_timestamp/1]).%% This is for XREF-deprecated([{format_versions, 1, eventually}]).-include("megaco_internal.hrl").%%-----------------------------------------------------------------%% Starts the Megaco application%%-----------------------------------------------------------------start() ->    application:start(?APPLICATION).%%-----------------------------------------------------------------%% Stops the Megaco application%%-----------------------------------------------------------------stop() ->    application:stop(?APPLICATION).%%-----------------------------------------------------------------%% Initial configuration of a user%%-----------------------------------------------------------------start_user(UserMid, Config) ->    megaco_config:start_user(UserMid, Config).%%-----------------------------------------------------------------%% Delete the configuration of a user%%-----------------------------------------------------------------stop_user(UserMid) ->    megaco_config:stop_user(UserMid).%%-----------------------------------------------------------------%% Lookup user information%%-----------------------------------------------------------------user_info(UserMid, requests) ->    megaco_messenger:which_requests(UserMid);user_info(UserMid, replies) ->    megaco_messenger:which_replies(UserMid);user_info(UserMid, Item) ->    megaco_config:user_info(UserMid, Item).%%-----------------------------------------------------------------%% Update information about a user%%-----------------------------------------------------------------update_user_info(UserMid, Item, Value) ->    megaco_config:update_user_info(UserMid, Item, Value).%%-----------------------------------------------------------------%% Lookup information about an active connection%%-----------------------------------------------------------------conn_info(ConnHandle, requests) ->    megaco_messenger:which_requests(ConnHandle);conn_info(ConnHandle, replies) ->    megaco_messenger:which_replies(ConnHandle);conn_info(ConnHandle, Item) ->    megaco_config:conn_info(ConnHandle, Item).%%-----------------------------------------------------------------%% Update information about an active connection%%-----------------------------------------------------------------update_conn_info(ConnHandle, Item, Value) ->    megaco_config:update_conn_info(ConnHandle, Item, Value).%%-----------------------------------------------------------------%% Lookup system information%%-----------------------------------------------------------------system_info(Item) ->    megaco_config:system_info(Item).%%-----------------------------------------------------------------%% Establish a "virtual" connection%%-----------------------------------------------------------------connect(ReceiveHandle, RemoteMid, SendHandle, ControlPid) ->    megaco_messenger:connect(ReceiveHandle, RemoteMid, SendHandle, ControlPid).%%-----------------------------------------------------------------%% Tear down a "virtual" connection%%-----------------------------------------------------------------disconnect(ConnHandle, Reason) ->    megaco_messenger:disconnect(ConnHandle, {user_disconnect, Reason}).%%-----------------------------------------------------------------%% Sends a transaction request and waits for a reply%%-----------------------------------------------------------------call(ConnHandle, ActionRequests, Options) ->    megaco_messenger:call(ConnHandle, ActionRequests, Options).%%-----------------------------------------------------------------%% Sends a transaction request but does NOT wait for a reply%%-----------------------------------------------------------------cast(ConnHandle, ActionRequests, Options) ->    megaco_messenger:cast(ConnHandle, ActionRequests, Options).%%-----------------------------------------------------------------%% Test the validity of the actions%%-----------------------------------------------------------------    test_request(ConnHandle, Version, EncodingMod, EncodingConfig, 	     ActionRequests) ->    megaco_messenger:test_request(ConnHandle, ActionRequests, 				  Version, EncodingMod, EncodingConfig).%% This tests the actual_reply() type of return from the %% handle_trans_request function.%% test_reply(ConnHandle, Version, EncodingMod, EncodingConfig, 	   Reply) ->    megaco_messenger:test_reply(ConnHandle, Version, 				EncodingMod, EncodingConfig, Reply).%%-----------------------------------------------------------------%% Func: get_stats/0, get_stats/1, get_stats/2%% Description: Retreive statistics (counters) for TCP%%-----------------------------------------------------------------get_stats() ->    megaco_messenger:get_stats().get_stats(SendHandle) ->    megaco_messenger:get_stats(SendHandle).get_stats(SendHandle, Counter) ->    megaco_messenger:get_stats(SendHandle, Counter).%%-----------------------------------------------------------------%% Func: reset_stats/0, reaet_stats/1%% Description: Reset statistics (counters) for TCP%%-----------------------------------------------------------------reset_stats() ->    megaco_messenger:reset_stats().reset_stats(SendHandle) ->    megaco_messenger:reset_stats(SendHandle).%%-----------------------------------------------------------------%% Cancel all outstanding messages for this connection%%-----------------------------------------------------------------cancel(ConnHandle, Reason) ->    megaco_messenger:cancel(ConnHandle, {user_cancel, Reason}).%%-----------------------------------------------------------------%% Process a received message%%-----------------------------------------------------------------process_received_message(ReceiveHandle, ControlPid, SendHandle, BinMsg) ->    megaco_messenger:process_received_message(ReceiveHandle, ControlPid, 					      SendHandle, BinMsg).receive_message(ReceiveHandle, ControlPid, SendHandle, BinMsg) ->    megaco_messenger:receive_message(ReceiveHandle, ControlPid, 				     SendHandle, BinMsg).%%-----------------------------------------------------------------%% Encode the actions list for one or more transactions.%%-----------------------------------------------------------------encode_actions(ConnHandle, ActionRequests, Options) ->    megaco_messenger:encode_actions(ConnHandle, ActionRequests, Options).%%-----------------------------------------------------------------%% Convert the (token) tags found in a decoded message into a %% printable string.%%-----------------------------------------------------------------token_tag2string(Tag) ->    token_tag2string(Tag, pretty).token_tag2string(Tag, pretty) ->    token_tag2string(Tag, megaco_pretty_text_encoder);token_tag2string(Tag, compact) ->    token_tag2string(Tag, megaco_compact_text_encoder);token_tag2string(Tag, Mod) when is_atom(Tag) and is_atom(Mod) ->    Mod:token_tag2string(Tag).token_tag2string(Tag, pretty, V) ->    token_tag2string(Tag, megaco_pretty_text_encoder, V);token_tag2string(Tag, compact, V) ->    token_tag2string(Tag, megaco_compact_text_encoder, V);token_tag2string(Tag, Mod, V) when is_atom(Tag) and is_atom(Mod) ->    Mod:token_tag2string(Tag, V).%%-----------------------------------------------------------------%% Parses a digit map body%%-----------------------------------------------------------------parse_digit_map(DigitMapBody) ->    megaco_digit_map:parse(DigitMapBody).%%-----------------------------------------------------------------%% Collect digit map letters according to the digit map%%-----------------------------------------------------------------eval_digit_map(DigitMap) ->    megaco_digit_map:eval(DigitMap).eval_digit_map(DigitMap, Timers) ->    megaco_digit_map:eval(DigitMap, Timers).%%-----------------------------------------------------------------%% Send one or more events to event collector process%%-----------------------------------------------------------------report_digit_event(DigitMapEvalPid, Event) ->    megaco_digit_map:report(DigitMapEvalPid, Event).%%-----------------------------------------------------------------%% Feed digit map collector with events and return the result%%-----------------------------------------------------------------test_digit_event(DigitMap, Events) ->    megaco_digit_map:test(DigitMap, Events).%%-----------------------------------------------------------------%% encode_binary_term_id(Config, MegacoTermId) ->%% %%   {ok, TerminationId} | {error, Reason}%%%% Encode the Megaco internal form of a termination id (a%% megaco_term_id record) into ASN.1'1 internal form of a termination%% id (a 'TerminationId' record).%% %%-----------------------------------------------------------------encode_binary_term_id(Config, TermId) ->    megaco_binary_term_id:encode(Config, TermId).%%-----------------------------------------------------------------%% decode_binary_term_id(Config, TerminationId) ->%% %%   {ok, MegacoTermId} | {error, Reason}%%%% Decode ASN.1's internal form of a termination id (a 'TerminationId'%% record) into the Megaco internal form of a termination id (a%% megaco_term_id record).%%-----------------------------------------------------------------decode_binary_term_id(Config, TermId) ->    megaco_binary_term_id:decode(Config, TermId).%%-----------------------------------------------------------------%% encode_sdp(SDP) ->%% %%   {ok, PP} | {error, Reason}%%%% Encode a SDP construct into a property parm construct%%-----------------------------------------------------------------encode_sdp(SDP) ->    megaco_sdp:encode(SDP).%%-----------------------------------------------------------------%% decode_sdp(PP) ->%% %%   {ok, SDP} | {error, Reason}%%%% Decode a property parm construct into a SDP construct%%-----------------------------------------------------------------decode_sdp(PP) ->    megaco_sdp:decode(PP).%%-----------------------------------------------------------------%% {ok, Vs} = megaco:versions1(), megaco:format_versions(Vs).print_version_info() ->    {ok, Versions} = megaco:versions1(),    print_version_info(Versions).print_version_info(Versions) when is_list(Versions) ->    print_sys_info(Versions),    print_os_info(Versions),    print_mods_info(Versions);print_version_info(BadVersions) ->    {error, {bad_versions, BadVersions}}.format_versions(Versions) ->    print_version_info(Versions).print_sys_info(Versions) ->    case key1search(sys_info, Versions) of	{value, SysInfo} when list(SysInfo) ->	    {value, Arch} = key1search(arch, SysInfo, "Not found"),	    {value, Ver}  = key1search(ver, SysInfo, "Not found"),	    io:format("System info: "		      "~n   Arch: ~s"		      "~n   Ver:  ~s"		      "~n", [Arch, Ver]),	    ok;	_ ->	    io:format("System info: Not found~n", []),	    not_found    end.	    print_os_info(Versions) ->    case key1search(os_info, Versions) of	{value, OsInfo} when list(OsInfo) ->	    Fam = 		case key1search(fam, OsInfo, "Not found") of		    {value, F} when atom(F) ->			atom_to_list(F);		    {value, LF} when list(LF) ->			LF;		    {value, XF} ->			lists:flatten(io_lib:format("~p", [XF]))		end,	    Name = 		case key1search(name, OsInfo) of		    {value, N} when atom(N) ->			"[" ++ atom_to_list(N) ++ "]";		    {value, LN} when list(LN) ->			"[" ++ LN ++ "]";		    not_found -> 			""		end,	    Ver = 		case key1search(ver, OsInfo, "Not found") of		    {value, T} when tuple(T) ->			tversion(T);		    {value, LV} when list(LV) ->			LV;		    {value, XV} ->			lists:flatten(io_lib:format("~p", [XV]))		end,	    io:format("OS info: "		      "~n   Family: ~s ~s"		      "~n   Ver:    ~s"		      "~n", [Fam, Name, Ver]),	    ok;	_ ->	    io:format("OS info:     Not found~n", []),	    not_found    end.%% tversion({A, B, C}) ->%%     lists:flatten(io_lib:format("~w.~w.~w", [A, B, C]));tversion(T) ->

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -