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

📄 megaco_test_msg_prev3a_lib.erl

📁 OTP是开放电信平台的简称
💻 ERL
📖 第 1 页 / 共 5 页
字号:
		     durationTimer = Dur}.cre_ServiceChangeParm(M, R) when atom(M), list(R) ->    #'ServiceChangeParm'{serviceChangeMethod = M,			 serviceChangeReason = R}.cre_ServiceChangeParm(M, Addr, Prof, Reason) ->    cre_ServiceChangeParm(M, Addr, asn1_NOVALUE, Prof, Reason, asn1_NOVALUE, 			  asn1_NOVALUE, asn1_NOVALUE, 			  asn1_NOVALUE, asn1_NOVALUE).				%% Addr = asn1_NOVALUE | {AddrTag, AddrVal}cre_ServiceChangeParm(M, Addr, Ver, Prof, R, D, Mid, TS, I) ->    cre_ServiceChangeParm(M, Addr, Ver, Prof, R, D, Mid, TS, I, asn1_NOVALUE).		cre_ServiceChangeParm(M, Addr, Ver, Prof, R, D, Mid, TS, I, IF)   when is_atom(M) and        ((is_integer(Ver) and (0 =< Ver) and (Ver =< 99)) or	(Ver == asn1_NOVALUE)) and       (is_record(Prof, 'ServiceChangeProfile') or (Prof == asn1_NOVALUE)) and       is_list(R) and       ((is_integer(D) and (0 =< D) and (D =< 4294967295)) or 	(D == asn1_NOVALUE)) and       (is_record(TS, 'TimeNotation') or (TS == asn1_NOVALUE)) and       (is_record(I, 'AuditDescriptor') or (I == asn1_NOVALUE)) and       ((IF == 'NULL') or (IF == asn1_NOVALUE)) ->    F = fun(A) -> 		(A == asn1_NOVALUE) orelse 				      (is_tuple(A) 				       andalso is_atom(element(1, A))) 	end,    case (F(Addr) andalso F(Mid)) of	true ->	    #'ServiceChangeParm'{serviceChangeMethod         = M,				 serviceChangeAddress        = Addr, 				 serviceChangeVersion        = Ver, 				 serviceChangeProfile        = Prof,				 serviceChangeReason         = R,				 serviceChangeDelay          = D,				 serviceChangeMgcId          = Mid, 				 timeStamp                   = TS, 				 serviceChangeInfo           = I,				 serviceChangeIncompleteFlag = IF};	_ ->	    exit({invalid_ServiceChangeParm_args, {Addr, Mid}})    end.		cre_ServiceChangeAddress(portNumber = Tag, P)   when integer(P), 0 =< P, P =< 65535 ->    {Tag, P};cre_ServiceChangeAddress(ip4Address = Tag, A) when record(A, 'IP4Address') ->    {Tag, A};cre_ServiceChangeAddress(ip6Address = Tag, A) when record(A, 'IP6Address') ->    {Tag, A};cre_ServiceChangeAddress(domainName = Tag, N) when record(N, 'DomainName') ->    {Tag, N};cre_ServiceChangeAddress(deviceName = Tag, N) when list(N) ->    {Tag, N};cre_ServiceChangeAddress(mtpAddress = Tag, A) when list(A) ->    {Tag, A}.cre_ServiceChangeResParm() ->    #'ServiceChangeResParm'{}.cre_ServiceChangeResParm(Addr, Prof) ->    cre_ServiceChangeResParm(asn1_NOVALUE, Addr, asn1_NOVALUE, 			     Prof, asn1_NOVALUE).cre_ServiceChangeResParm(Mid, Addr, Ver, Prof, TS)  when ((is_integer(Ver) and (0 =< Ver) and (Ver =< 99)) or 	(Ver == asn1_NOVALUE)) and        (is_record(Prof, 'ServiceChangeProfile') or (Prof == asn1_NOVALUE)) and       (is_record(TS, 'TimeNotation') or (TS == asn1_NOVALUE)) ->    F = fun(A) -> 		(A == asn1_NOVALUE) orelse 				      (is_tuple(A) 				       andalso is_atom(element(1, A))) 	end,    case (F(Addr) andalso F(Mid)) of	true ->	    #'ServiceChangeResParm'{serviceChangeMgcId   = Mid, 				    serviceChangeAddress = Addr, 				    serviceChangeVersion = Ver, 				    serviceChangeProfile = Prof,				    timeStamp            = TS};	_ ->	    exit({invalid_ServiceChangeResParm_args, {Addr, Mid}})    end.cre_ServiceChangeMethod(failover = M) ->    M;cre_ServiceChangeMethod(forced = M) ->    M;cre_ServiceChangeMethod(graceful = M) ->    M;cre_ServiceChangeMethod(restart = M) ->    M;cre_ServiceChangeMethod(disconnected = M) ->    M;cre_ServiceChangeMethod(handOff = M) ->    M.%% The version field is added to make it look more like ABNFcre_ServiceChangeProfile(N) ->    cre_ServiceChangeProfile(N, 1).cre_ServiceChangeProfile(N, V)   when is_list(N) and is_integer(V) and (0 =< V) and (V =< 99) ->    #'ServiceChangeProfile'{profileName = N, version = V}.    cre_PackagesDescriptor([H|_] = D) when record(H, 'PackagesItem') ->    D.cre_PackagesItem(N, Ver) when list(N), integer(Ver), 0 =< Ver, Ver =< 99 ->    #'PackagesItem'{packageName    = N, 		    packageVersion = Ver}.cre_StatisticsDescriptor(D) ->    true = is_StatisticsDescriptor(D),    D.cre_StatisticsParameter(N) when list(N) ->    #'StatisticsParameter'{statName = N}.cre_StatisticsParameter(N, V) when list(N), list(V) ->    #'StatisticsParameter'{statName = N, statValue = V}.%% cre_NonStandardData({Tag, _} = Id, Data) when atom(Tag), list(Data) ->%%     #'NonStandardData'{nonStandardIdentifier = Id, data = Data}.%% cre_NonStandardIdentifier(H221) when record(H221, 'H221NonStandard') ->%%     {h221NonStandard, H221};%% cre_NonStandardIdentifier(Obj) when tuple(Obj) ->%%     {object, Obj};%% cre_NonStandardIdentifier(Exp) when list(Exp), length(Exp) == 8 ->%%     {experimental, Exp}.%% cre_H221NonStandard(CC1, CC2, Ext, MC) %%   when (is_integer(CC1) and (0 =< CC1) and (CC1 =< 255)) and%%        (is_integer(CC2) and (0 =< CC2) and (CC2 =< 255)) and%%        (is_integer(Ext) and (0 =< Ext) and (Ext =< 255)) and%%        (is_integer(MC)  and (0 =< MC)  and (MC =< 255)) ->%%     #'H221NonStandard'{t35CountryCode1  = CC1, %% 		       t35CountryCode2  = CC2, %% 		       t35Extension     = Ext, %% 		       manufacturerCode = MC}.       cre_TimeNotation(D, T)   when list(D), length(D) == 8, list(T), length(T) == 8 ->    #'TimeNotation'{date = D, time = T}.    cre_Value([H|_] = V) when list(H) ->    V.cre_BOOLEAN(true = B) ->    B;cre_BOOLEAN(false = B) ->    B.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -- MegacoMessage -- is_MegacoMessage(#'MegacoMessage'{authHeader = Auth,				  mess       = Mess}) ->    d("is_MegacoMessage -> entry"),    is_opt_AuthenticationHeader(Auth) andalso is_Message(Mess);is_MegacoMessage(_) ->    false.    chk_MegacoMessage(M, M) ->    d("chk_MegacoMessage -> entry (1)"),    chk_type(fun is_MegacoMessage/1, 'MegacoMessage', M);chk_MegacoMessage(#'MegacoMessage'{authHeader = Auth1,				   mess       = Mess1},		  #'MegacoMessage'{authHeader = Auth2,				   mess       = Mess2}) ->    d("chk_MegacoMessage -> entry (2)"),    chk_opt_AuthenticationHeader(Auth1,Auth2),    chk_Message(Mess1,Mess2),    ok;chk_MegacoMessage(M1, M2) ->    wrong_type('MegacoMessage', M1, M2).%% -- AuthenticationHeader -- is_opt_AuthenticationHeader(AH) ->    is_OPTIONAL(fun is_AuthenticationHeader/1, AH).is_AuthenticationHeader(#'AuthenticationHeader'{secParmIndex = SPI, 						seqNum       = SN, 						ad           = AD}) ->    is_SecurityParmIndex(SPI) andalso 	is_SequenceNum(SN) andalso 	is_AuthData(AD);is_AuthenticationHeader(_) ->    false.    %% This stuff is not really used, so make it simple...chk_opt_AuthenticationHeader(A1, A2) ->    chk_OPTIONAL('AuthenticationHeader', A1, A2, 		 fun is_AuthenticationHeader/1, 		 fun chk_AuthenticationHeader/2).chk_AuthenticationHeader(A, A) ->    chk_type(fun is_AuthenticationHeader/1, 'AuthenticationHeader', A);chk_AuthenticationHeader(A1, A2) ->    case (is_AuthenticationHeader(A1) andalso is_AuthenticationHeader(A2)) of	true ->	    not_equal('AuthenticationHeader', A1, A2);	false ->	    wrong_type('AuthenticationHeader', A1, A2)    end.%% -- SecurityParmIndex --is_SecurityParmIndex(V) -> is_OCTET_STRING(V, {exact, 4}).%% -- SequenceNum --is_SequenceNum(V) -> is_OCTET_STRING(V, {exact, 4}).%% -- AuthData --is_AuthData(V) -> is_OCTET_STRING(V, {range, 12, 32}).%% -- Message --is_Message(#'Message'{version     = V,		      mId         = MID,		      messageBody = Body}) ->    d("is_Message -> entry"),    is_INTEGER(V, {range, 0, 99}) andalso 	is_MId(MID) andalso 	is_Message_messageBody(Body);is_Message(_) ->    false.chk_Message(M, M) ->    d("chk_Message -> entry (1)"),    chk_type(fun is_Message/1, 'Message', M);chk_Message(#'Message'{version     = V1,		       mId         = MID1,		       messageBody = Body1},	    #'Message'{version     = V2,		       mId         = MID2,		       messageBody = Body2}) ->    d("chk_Message -> entry with"      "~n   V1:    ~p"      "~n   MID1:  ~p"      "~n   Body1: ~p"      "~n   V2:    ~p"      "~n   MID2:  ~p"      "~n   Body2: ~p",     [V1, MID1, Body1, V2, MID2, Body2]),    validate(fun() -> chk_INTEGER(V1, V2, {range, 0, 99}) end, 'Message'),    validate(fun() -> chk_MId(MID1, MID2) end, 'Message'),    chk_Message_messageBody(Body1, Body2),    ok;chk_Message(M1, M2) ->    wrong_type('Message', M1, M2).is_Message_messageBody({Tag, Val}) ->    d("is_Message_messageBody -> entry"),    is_Message_messageBody_tag(Tag) andalso 	is_Message_messageBody_val(Tag, Val);is_Message_messageBody(_) ->    false.is_Message_messageBody_tag(Tag) ->    Tags = [messageError, transactions],    lists:member(Tag, Tags).    is_Message_messageBody_val(messageError, Val) ->    is_ErrorDescriptor(Val);is_Message_messageBody_val(transactions, Val) ->    is_Message_messageBody_transactions(Val).is_Message_messageBody_transactions([]) ->    d("is_Message_messageBody_transactions -> entry when done"),    true;is_Message_messageBody_transactions([H|T]) ->    d("is_Message_messageBody_transactions -> entry"),    is_Transaction(H) andalso is_Message_messageBody_transactions(T);is_Message_messageBody_transactions(_) ->    false.chk_Message_messageBody(B, B) ->    d("chk_Message_messageBody -> entry (1)"),    chk_type(fun is_Message_messageBody/1, 'Message_messageBody', B);chk_Message_messageBody({Tag, Val1} = B1, {Tag, Val2} = B2) ->    d("chk_Message_messageBody -> entry (2)"),    case (is_Message_messageBody_tag(Tag) andalso 	  is_Message_messageBody_val(Tag, Val1) andalso 	  is_Message_messageBody_val(Tag, Val2)) of	true ->	    chk_Message_messageBody_val(Tag, Val1, Val2);	false ->	    wrong_type('Message_messageBody', B1, B2)    end;chk_Message_messageBody({Tag1, Val1} = B1, {Tag2, Val2} = B2) ->    d("chk_Message_messageBody -> entry (3)"),    case ((is_Message_messageBody_tag(Tag1) andalso 	   is_Message_messageBody_val(Tag1, Val1)) andalso 	  (is_Message_messageBody_tag(Tag2) andalso 	   is_Message_messageBody_val(Tag2, Val2))) of	true ->	    not_equal('Message_messageBody', B1, B2);	false ->	    wrong_type('Message_messageBody', B1, B2)    end;chk_Message_messageBody(B1, B2) ->    wrong_type('Message_messageBody', B1, B2).chk_Message_messageBody_val(messageError, Val1, Val2) ->    validate(fun() -> chk_ErrorDescriptor(Val1, Val2) end, 	     'Message_messageBody');chk_Message_messageBody_val(transactions, Val1, Val2) ->    chk_Message_messageBody_transactions(lists:sort(Val1), 					 lists:sort(Val2)).chk_Message_messageBody_transactions([], []) ->    d("chk_Message_messageBody_transactions -> entry - ok (1)"),    ok;chk_Message_messageBody_transactions([] = T1, T2) ->    d("chk_Message_messageBody_transactions -> entry - not-equal (2)"),    not_equal('Message_messageBody_transactions', T1, T2);chk_Message_messageBody_transactions(T1, [] = T2) ->    d("chk_Message_messageBody_transactions -> entry - not-equal (3)"),    not_equal('Message_messageBody_transactions', T1, T2);chk_Message_messageBody_transactions([H|T1], [H|T2]) ->    d("chk_Message_messageBody_transactions -> entry (4)"),    case is_Transaction(H) of	true ->	    chk_Message_messageBody_transactions(T1, T2);	false ->	    wrong_type('Message_messageBody_transactions_val', H)    end;chk_Message_messageBody_transactions([H1|T1], [H2|T2]) ->    d("chk_Message_messageBody_transactions -> entry (5)"),    validate(fun() -> chk_Transaction(H1, H2) end, 	     'Message_messageBody_transactions_val'),    chk_Message_messageBody_transactions(T1, T2);chk_Message_messageBody_transactions(T1, T2) ->    d("chk_Message_messageBody_transactions -> entry - wrong-type (6)"),    wrong_type('Message_messageBody_transactions', T1, T2). %% -- MId --is_opt_MId(M) ->    is_OPTIONAL(fun is_MId/1, M).is_MId({Tag, Val}) ->    is_MId_tag(Tag) andalso is_MId_val(Tag, Val);is_MId(_) ->    false.is_MId_tag(Tag) ->    Tags = [ip4Address, ip6Address, domainName, deviceName, mtpAddress],     lists:member(Tag, Tags).is_MId_val(ip4Address, Val) -> is_IP4Address(Val);is_MId_val(ip6Address, Val) -> is_IP6Address(Val);is_MId_val(domainName, Val) -> is_DomainName(Val);is_MId_val(deviceName, Val) -> is_PathName(Val);is_MId_val(mtpAddress, Val) -> is_OCTET_STRING(Val, {range, 2, 4}).chk_opt_MId(M1, M2) ->    chk_OPTIONAL('MId', M1, M2, fun is_MId/1, fun chk_MId/2).chk_MId(M, M) ->    chk_type(fun is_MId/1, 'MId', M);chk_MId({Tag, Val1} = M1, {Tag, Val2} = M2) ->    case (is_MId_tag(Tag) andalso	  is_MId_val(Tag, Val1) andalso	  is_MId_val(Tag, Val2

⌨️ 快捷键说明

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