megaco_erl_dist_encoder_mc.erl
来自「OTP是开放电信平台的简称」· ERL 代码 · 共 1,892 行 · 第 1/5 页
ERL
1,892 行
%% ``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: Externalize/internalize Megaco/H.248 messages%%-----------------------------------------------------------------------module(megaco_erl_dist_encoder_mc).-behaviour(megaco_edist_compress).-export([ encode/1, encode/2, decode/1, decode/2 ]).-include("megaco_message_internal.hrl").-include_lib("megaco/src/app/megaco_internal.hrl").%%----------------------------------------------------------------------%% Megaco compress a Megaco record into a binary%% Return {ok, DeepIoList} | {error, Reason}%%----------------------------------------------------------------------encode(M) -> e(M, 1).encode(M, Vsn) -> ?d("encode -> entry with" "~n M: ~p" "~n V: ~p", [M, V]), Result = e(M, Vsn), ?d("encode -> " "~n Result: ~p", [Result]), Result.decode(M) -> d(M, 1).decode(M, Vsn) -> ?d("decode -> entry with" "~n M: ~p" "~n V: ~p", [M, V]), Result = d(M, Vsn), ?d("decode -> " "~n Result: ~p", [Result]), Result.el(L, V) when is_list(L) -> [e(T, V) || T <- L];el(L, _V) -> L.dl(L, V) when is_list(L) -> [d(T, V) || T <- L];dl(L, _V) -> L.ell(L, V) when is_list(L) -> [el(T, V) || T <- L];ell(L, _V) -> L.dll(L, V) when is_list(L) -> [dl(T, V) || T <- L];dll(L, _V) -> L.e(asn1_NOVALUE, _) -> {1};e('NULL', _V) -> {2};e(sendRecv, _V) -> {3};e(recvOnly, _V) -> {4};e(restart, _V) -> {5};e(mediaToken, _V) -> {6};e(eventsToken, _V) -> {7};e(signalsToken, _V) -> {8};e(digitMapToken, _V) -> {9};e(statsToken, _V) -> {10};e(packagesToken, _V) -> {11};e(h221, _V) -> {12};e(h223, _V) -> {13};e(h226, _V) -> {14};e(v76, _V) -> {15};e({'MegacoMessage', asn1_NOVALUE, {'Message', 1 = V, Mid, Body}}, _) -> {20, e(Mid, V), e(Body, V)};e({'MegacoMessage', asn1_NOVALUE, {'Message', 2 = V, Mid, Body}}, _) -> {21, e(Mid, V), e(Body, V)};e({'MegacoMessage', asn1_NOVALUE, {'Message', V, Mid, Body}}, _) -> {22, V, e(Mid, V), e(Body, V)};e({'MegacoMessage', AuthHeader, {'Message', 1 = V, Mid, Body}}, _) -> {23, e(AuthHeader, V), V, e(Mid, V), e(Body, V)};e({'MegacoMessage', AuthHeader, {'Message', 2 = V, Mid, Body}}, _) -> {24, e(AuthHeader, V), V, e(Mid, V), e(Body, V)};e({'MegacoMessage', AuthHeader, {'Message', V, Mid, Body}}, _) -> {25, V, e(AuthHeader, V), V, e(Mid, V), e(Body, V)};e({'MegacoMessage', AuthHeader, Mess}, V) -> {26, e(AuthHeader, V), e(Mess, V)};e({'Message', V, Mid, Body}, _) -> {27, V, e(Mid, V), e(Body, V)};e({domainName, {'DomainName', Name, asn1_NOVALUE}}, _V) -> {30, Name};e({domainName, {'DomainName', Name, PortNumber}}, _V) -> {31, Name, PortNumber};e({domainName, N}, V) -> {32, e(N, V)};e({'DomainName', Name, asn1_NOVALUE}, _V) -> {33, Name};e({'DomainName', Name, PortNumber}, _V) -> {34, Name, PortNumber};e({ip4Address, {'IP4Address', Addr, asn1_NOVALUE}}, _V) -> {35, Addr};e({ip4Address, {'IP4Address', Addr, PortNumber}}, _V) -> {36, Addr, PortNumber};e({ip4Address, A}, V) -> {37, e(A, V)};e({'IP4Address', Addr, asn1_NOVALUE}, _V) -> {38, Addr};e({'IP4Address', Addr, PortNumber}, _V) -> {39, Addr, PortNumber};e({ip6Address, {'IP6Address', Addr, asn1_NOVALUE}}, _V) -> {40, Addr};e({ip6Address, {'IP6Address', Addr, PortNumber}}, _V) -> {41, Addr, PortNumber};e({ip6Address, A}, V) -> {42, e(A, V)};e({'IP6Address', Addr, asn1_NOVALUE}, _V) -> {43, Addr};e({'IP6Address', Addr, PortNumber}, _V) -> {44, Addr, PortNumber};e({transactions, [Transaction]}, V) -> {50, e(Transaction, V)};e({transactions, Transactions}, V) -> {51, el(Transactions, V)};e({messageError, {'ErrorDescriptor', EC, asn1_NOVALUE}}, _V) -> {52, EC};e({messageError, {'ErrorDescriptor', EC, ET}}, _V) -> {53, EC, ET};e({messageError, Error}, V) -> {54, e(Error, V)};e({transactionRequest, {'TransactionRequest', TransId, Actions}}, V) -> {55, TransId, el(Actions, V)};e({transactionPending, {'TransactionPending', TransId}}, _V) -> {56, TransId};e({transactionReply, {'TransactionReply', TransId, asn1_NOVALUE, TransRes}}, V) -> {57, TransId, e(TransRes, V)};e({transactionReply, {'TransactionReply', TransId, 'NULL', TransRes}}, V) -> {58, TransId, e(TransRes, V)};e({transactionReply, {'TransactionReply', TransId, ImmAckReq, TransRes}}, V) -> {59, TransId, e(ImmAckReq, V), e(TransRes, V)};e({transactionResponseAck, T}, V) -> {60, el(T, V)};e({'TransactionAck', FirstAck, asn1_NOVALUE}, _V) -> {61, FirstAck};e({'TransactionAck', FirstAck, LastAck}, _V) -> {62, FirstAck, LastAck};e({'ErrorDescriptor', EC, asn1_NOVALUE}, _V) -> {70, EC};e({'ErrorDescriptor', EC, ET}, _V) -> {71, EC, ET};e({'ActionRequest', Cid, CtxReq, CtxAAR, [CmdReq]}, V) -> {80, Cid, e(CtxReq, V), e(CtxAAR, V), e(CmdReq, V)};e({'ActionRequest', Cid, CtxReq, CtxAAR, CmdReqs}, V) -> {81, Cid, e(CtxReq, V), e(CtxAAR, V), el(CmdReqs, V)};e({'ContextRequest', P, E, T}, V) when V < 3 -> {90, e(P, V), e(E, V), el(T, V)};e({'ContextRequest', P, E, T, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE}, V) when V >= 3 -> {91, e(P, V), e(E, V), el(T, V)};e({'ContextRequest', P, E, T, IC, asn1_NOVALUE, asn1_NOVALUE}, V) when V >= 3 -> {92, e(P, V), e(E, V), el(T, V), e(IC, V)};e({'ContextRequest', P, E, T, IC, CP, asn1_NOVALUE}, V) when V >= 3 -> {93, e(P, V), e(E, V), el(T, V), e(IC, V), el(CP, V)};e({'ContextRequest', P, E, T, IC, CP, CL}, V) when V >= 3 -> {94, e(P, V), e(E, V), el(T, V), e(IC, V), el(CP, V), el(CL, V)};e({'ContextAttrAuditRequest', P, E, T}, V) when V < 3 -> {100, e(P, V), e(E, V), e(T, V)};e({'ContextAttrAuditRequest', P, E, T, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE}, V) when V >= 3 -> {101, e(P, V), e(E, V), e(T, V)};e({'ContextAttrAuditRequest', P, E, T, IC, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE}, V) when V >= 3 -> {102, e(P, V), e(E, V), e(T, V), e(IC, V)};e({'ContextAttrAuditRequest', P, E, T, IC, CPA, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE}, V) when V >= 3 -> {103, e(P, V), e(E, V), e(T, V), e(IC, V), el(CPA, V)};e({'ContextAttrAuditRequest', P, E, T, IC, CPA, SP, asn1_NOVALUE, asn1_NOVALUE, asn1_NOVALUE}, V) when V >= 3 -> {104, e(P, V), e(E, V), e(T, V), e(IC, V), el(CPA, V), e(SP, V)};e({'ContextAttrAuditRequest', P, E, T, IC, CPA, SP, SE, asn1_NOVALUE, asn1_NOVALUE}, V) when V >= 3 -> {105, e(P, V), e(E, V), e(T, V), e(IC, V), el(CPA, V), e(SP, V), e(SE, V)};e({'ContextAttrAuditRequest', P, E, T, IC, CPA, SP, SE, SIC, asn1_NOVALUE}, V) when V >= 3 -> {106, e(P, V), e(E, V), e(T, V), e(IC, V), el(CPA, V), e(SP, V), e(SE, V), e(SIC, V)};e({'ContextAttrAuditRequest', P, E, T, IC, CPA, SP, SE, SIC, SL}, V) when V >= 3 -> {107, e(P, V), e(E, V), e(T, V), e(IC, V), el(CPA, V), e(SP, V), e(SE, V), e(SIC, V), e(SL, V)};e({'CommandRequest', Cmd, asn1_NOVALUE, asn1_NOVALUE}, V) -> {110, e(Cmd, V)};e({'CommandRequest', Cmd, 'NULL', asn1_NOVALUE}, V) -> {111, e(Cmd, V)};e({'CommandRequest', Cmd, asn1_NOVALUE, 'NULL'}, V) -> {112, e(Cmd, V)};e({'CommandRequest', Cmd, 'NULL', 'NULL'}, V) -> {113, e(Cmd, V)};e({'CommandRequest', Cmd, Opt, WR}, V) -> {114, e(Cmd, V), e(Opt, V), e(WR, V)};e({'TopologyRequest', From, To, Dir}, 1 = V) -> {120, e(From, V), e(To, V), e(Dir, V)};e({'TopologyRequest', From, To, Dir, SID}, 2 = V) -> {121, e(From, V), e(To, V), e(Dir, V), e(SID, V)};e({'TopologyRequest', From, To, Dir, SID, asn1_NOVALUE}, V) when (V >= 3) -> {122, e(From, V), e(To, V), e(Dir, V), e(SID, V)};e({'TopologyRequest', From, To, Dir, SID, TDE}, V) when (V >= 3) -> {123, e(From, V), e(To, V), e(Dir, V), e(SID, V), e(TDE, V)};e({modReq, {'AmmRequest', TID, []}}, V) -> {130, el(TID, V)};e({modReq, {'AmmRequest', TID, [Desc]}}, V) -> {131, el(TID, V), e(Desc, V)};e({modReq, {'AmmRequest', TID, Descs}}, V) -> {132, el(TID, V), el(Descs, V)};e({addReq, {'AmmRequest', TID, []}}, V) -> {133, el(TID, V)};e({addReq, {'AmmRequest', TID, [Desc]}}, V) -> {134, el(TID, V), e(Desc, V)};e({addReq, {'AmmRequest', TID, Descs}}, V) -> {135, el(TID, V), el(Descs, V)};e({'AmmRequest', TID, Descs}, V) -> {136, el(TID, V), el(Descs, V)};e({subtractReq, {'SubtractRequest', TID, asn1_NOVALUE}}, V) -> {140, el(TID, V)};e({subtractReq, {'SubtractRequest', TID, AudDesc}}, V) -> {141, el(TID, V), e(AudDesc, V)};e({'SubtractRequest', TID, asn1_NOVALUE}, V) -> {142, el(TID, V)};e({'SubtractRequest', TID, AudDesc}, V) -> {143, el(TID, V), e(AudDesc, V)};e({auditValueRequest, AR}, V) -> {150, e(AR, V)};e({'AuditRequest', TID, AudDesc}, V) when V < 3 -> {160, e(TID, V), e(AudDesc, V)};e({'AuditRequest', TID, AudDesc, asn1_NOVALUE}, V) when V >= 3 -> {161, e(TID, V), e(AudDesc, V)};e({'AuditRequest', TID, AudDesc, TIDs}, V) when V >= 3 -> {162, e(TID, V), e(AudDesc, V), el(TIDs, V)};e({actionReplies, [AR]}, V) -> {170, e(AR, V)};e({actionReplies, ARs}, V) -> {171, el(ARs, V)};e({'ActionReply', CID, asn1_NOVALUE, asn1_NOVALUE, [CmdRep]}, V) -> {180, CID, e(CmdRep, V)};e({'ActionReply', CID, asn1_NOVALUE, asn1_NOVALUE, CmdRep}, V) -> {181, CID, el(CmdRep, V)};e({'ActionReply', CID, asn1_NOVALUE, CtxRep, [CmdRep]}, V) -> {182, CID, e(CtxRep, V), e(CmdRep, V)};e({'ActionReply', CID, asn1_NOVALUE, CtxRep, CmdRep}, V) -> {183, CID, e(CtxRep, V), el(CmdRep, V)};e({'ActionReply', CID, ED, asn1_NOVALUE, [CmdRep]}, V) -> {184, CID, e(ED, V), e(CmdRep, V)};e({'ActionReply', CID, ED, asn1_NOVALUE, CmdRep}, V) -> {185, CID, e(ED, V), el(CmdRep, V)};e({'ActionReply', CID, ED, CtxRep, [CmdRep]}, V) -> {186, CID, e(ED, V), e(CtxRep, V), e(CmdRep, V)};e({'ActionReply', CID, ED, CtxRep, CmdRep}, V) -> {187, CID, e(ED, V), e(CtxRep, V), el(CmdRep, V)};e({'AuditDescriptor', asn1_NOVALUE}, 1 = _V) -> {190};e({'AuditDescriptor', AT}, 1 = V) -> {191, el(AT, V)};e({'AuditDescriptor', asn1_NOVALUE, asn1_NOVALUE}, V) when V >= 2 -> {192};e({'AuditDescriptor', AT, APT}, V) when is_list(AT) and is_list(APT) and (V >= 2) -> {193, el(AT, V), el(APT, V)};e({'AuditDescriptor', AT, APT}, V) when is_list(APT) and (V >= 2) -> {194, e(AT, V), el(APT, V)};e({'AuditDescriptor', AT, APT}, V) when is_list(AT) and (V >= 2) -> {195, el(AT, V), e(APT, V)};e({'AuditDescriptor', AT, APT}, V) when (V >= 2) -> {196, e(AT, V), e(APT, V)};e({notifyReq, {'NotifyRequest', TID, OED, asn1_NOVALUE}}, V) -> {200, el(TID, V), e(OED, V)};e({notifyReq, {'NotifyRequest', TID, OED, ED}}, V) -> {201, el(TID, V), e(OED, V), e(ED, V)};e({'NotifyRequest', TID, OED}, V) -> {202, el(TID, V), e(OED, V)};e({'NotifyRequest', TID, OED, ED}, V) -> {203, el(TID, V), e(OED, V), e(ED, V)};e({'ObservedEventsDescriptor', RID, OEL}, V) -> {210, RID, el(OEL, V)};e({'ObservedEvent', EN, SID, EPL, TN}, V) -> {220, EN, e(SID, V), el(EPL, V), e(TN, V)};e({'EventParameter', "type", ["est"], asn1_NOVALUE}, _V) -> {230};e({'EventParameter', "type", [Val], asn1_NOVALUE}, _V) -> {231, Val};e({'EventParameter', "type", Val, asn1_NOVALUE}, _V) -> {232, Val};e({'EventParameter', "Generalcause", ["NR"], asn1_NOVALUE}, _V) -> {233};e({'EventParameter', "Generalcause", ["UR"], asn1_NOVALUE}, _V) -> {234};e({'EventParameter', "Generalcause", ["FT"], asn1_NOVALUE}, _V) -> {235};e({'EventParameter', "Generalcause", ["FP"], asn1_NOVALUE}, _V) -> {236};e({'EventParameter', "Generalcause", ["IW"], asn1_NOVALUE}, _V) -> {237};e({'EventParameter', "Generalcause", ["UN"], asn1_NOVALUE}, _V) -> {238};e({'EventParameter', "Generalcause", [Val], asn1_NOVALUE}, _V) -> {239, Val};e({'EventParameter', "Generalcause", Val, asn1_NOVALUE}, _V) -> {240, Val};e({'EventParameter', "Failurecause", [Val], asn1_NOVALUE}, _V) -> {241, Val};e({'EventParameter', "Failurecause", Val, asn1_NOVALUE}, _V) -> {242, Val};e({'EventParameter', EPN, Val, asn1_NOVALUE}, _V) ->
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?