📄 megaco_text_parser_v3.hrl
字号:
merge_indAudTerminationStateDescriptor({pkgdName, Val}) -> PropParm = #'IndAudPropertyParm'{name = Val}, #'IndAudTerminationStateDescriptor'{propertyParms = [PropParm]};merge_indAudTerminationStateDescriptor(serviceStatesToken) -> #'IndAudTerminationStateDescriptor'{serviceState = 'NULL'};merge_indAudTerminationStateDescriptor(bufferToken) -> #'IndAudTerminationStateDescriptor'{eventBufferControl = 'NULL'}.merge_indAudEventBufferDescriptor(EventName, SpecParams) -> IAEBD = #'IndAudEventBufferDescriptor'{eventName = EventName}, do_merge_indAudEventBufferDescriptor(SpecParams, IAEBD).do_merge_indAudEventBufferDescriptor(asn1_NOVALUE, IAEBD) -> IAEBD;do_merge_indAudEventBufferDescriptor({streamID, StreamID}, IAEBD) -> IAEBD#'IndAudEventBufferDescriptor'{streamID = StreamID};do_merge_indAudEventBufferDescriptor({eventParameterName, _Name} = EPN, IAEBD) -> %% BUGBUG BUGBUG BUGBUG %% This is an ugly hack to allow the eventParamName which only %% exists in the text encoding... IAEBD#'IndAudEventBufferDescriptor'{streamID = EPN}.ensure_indAudSignalListParm(SIG) when record(SIG, 'Signal') -> ensure_indAudSignal(SIG).ensure_indAudSignal(#'Signal'{signalName = SignalName, streamID = asn1_NOVALUE, sigType = asn1_NOVALUE, duration = asn1_NOVALUE, notifyCompletion = asn1_NOVALUE, keepActive = asn1_NOVALUE, sigParList = []}) -> #'IndAudSignal'{signalName = SignalName}. ensure_IADMD({_TokenTag, _Line, #'DigitMapDescriptor'{digitMapName = Name, digitMapValue = asn1_NOVALUE}}) -> #'IndAudDigitMapDescriptor'{digitMapName = Name}.merge_indAudPackagesDescriptor(#'PackagesItem'{packageName = N, packageVersion = V}) -> #'IndAudPackagesDescriptor'{packageName = N, packageVersion = V}.ensure_indAudTerminationStateParm(Token) -> case Token of {safeToken, _Line, "servicestates"} -> serviceStatesToken; {safeToken, _Line, "si"} -> serviceStatesToken; {safeToken, _Line, "buffer"} -> bufferToken; {safeToken, _Line, "bf"} -> bufferToken; PkgdName -> {pkgdName, ensure_pkgdName(PkgdName)} end.%% Types modified by v2:merge_auditDescriptor([]) -> #'AuditDescriptor'{};merge_auditDescriptor(Tokens) when list(Tokens) -> case lists:keysearch(terminationAudit, 1, Tokens) of {value, {terminationAudit, TA}} -> case lists:keydelete(terminationAudit, 1, Tokens) of [] -> #'AuditDescriptor'{auditPropertyToken = TA}; AuditTokens -> #'AuditDescriptor'{auditToken = AuditTokens, auditPropertyToken = TA} end; false -> #'AuditDescriptor'{auditToken = Tokens} end;merge_auditDescriptor(_) -> #'AuditDescriptor'{}.%% v2 - endmerge_ServiceChangeParm(Parms) -> Required = [serviceChangeReason, serviceChangeMethod], merge_ServiceChangeParm(Parms, #'ServiceChangeParm'{}, Required).merge_ServiceChangeParm([], SCP, []) -> SCP;merge_ServiceChangeParm([], _SCP, Required) -> exit({missing_required_serviceChangeParm, Required});merge_ServiceChangeParm([{address, Val}|Parms], SCP0, Req) when SCP0#'ServiceChangeParm'.serviceChangeAddress == asn1_NOVALUE, SCP0#'ServiceChangeParm'.serviceChangeMgcId == asn1_NOVALUE -> SCP = SCP0#'ServiceChangeParm'{serviceChangeAddress = Val}, merge_ServiceChangeParm(Parms, SCP, Req);merge_ServiceChangeParm([{address, Val}|_Parms], SCP0, _Req) when SCP0#'ServiceChangeParm'.serviceChangeAddress == asn1_NOVALUE -> MgcId = SCP0#'ServiceChangeParm'.serviceChangeMgcId, exit({not_both_address_mgcid_serviceChangeParm, Val, MgcId});merge_ServiceChangeParm([{mgc_id, Val}|Parms], SCP0, Req) when SCP0#'ServiceChangeParm'.serviceChangeMgcId == asn1_NOVALUE, SCP0#'ServiceChangeParm'.serviceChangeAddress == asn1_NOVALUE -> SCP = SCP0#'ServiceChangeParm'{serviceChangeMgcId = Val}, merge_ServiceChangeParm(Parms, SCP, Req);merge_ServiceChangeParm([{mgc_id, Val}|_Parms], SCP0, _Req) when SCP0#'ServiceChangeParm'.serviceChangeMgcId == asn1_NOVALUE -> Addr = SCP0#'ServiceChangeParm'.serviceChangeAddress, exit({not_both_address_mgcid_serviceChangeParm, Val, Addr});merge_ServiceChangeParm([{profile, Val}|Parms], SCP0, Req) when SCP0#'ServiceChangeParm'.serviceChangeProfile == asn1_NOVALUE -> SCP = SCP0#'ServiceChangeParm'{serviceChangeProfile = Val}, merge_ServiceChangeParm(Parms, SCP, Req);merge_ServiceChangeParm([{version, Val}|Parms], SCP0, Req) when SCP0#'ServiceChangeParm'.serviceChangeVersion == asn1_NOVALUE -> SCP = SCP0#'ServiceChangeParm'{serviceChangeVersion = Val}, merge_ServiceChangeParm(Parms, SCP, Req);%% REQUIRED (i.e. no default value)merge_ServiceChangeParm([{reason, Val}|Parms], SCP0, Req0) when SCP0#'ServiceChangeParm'.serviceChangeReason == undefined -> SCP = SCP0#'ServiceChangeParm'{serviceChangeReason = Val}, Req = lists:delete(serviceChangeReason, Req0), merge_ServiceChangeParm(Parms, SCP, Req);merge_ServiceChangeParm([{delay, Val}|Parms], SCP0, Req) when SCP0#'ServiceChangeParm'.serviceChangeDelay == asn1_NOVALUE -> SCP = SCP0#'ServiceChangeParm'{serviceChangeDelay = Val}, merge_ServiceChangeParm(Parms, SCP, Req);%% REQUIRED (i.e. no default value)merge_ServiceChangeParm([{method, Val}|Parms], SCP0, Req0) when SCP0#'ServiceChangeParm'.serviceChangeMethod == undefined -> SCP = SCP0#'ServiceChangeParm'{serviceChangeMethod = Val}, Req = lists:delete(serviceChangeMethod, Req0), merge_ServiceChangeParm(Parms, SCP, Req);merge_ServiceChangeParm([{time_stamp, Val}|Parms], SCP0, Req) when SCP0#'ServiceChangeParm'.timeStamp == asn1_NOVALUE -> SCP = SCP0#'ServiceChangeParm'{timeStamp = Val}, merge_ServiceChangeParm(Parms, SCP, Req);merge_ServiceChangeParm([{extension, _Val}|Parms], SCP0, Req) -> merge_ServiceChangeParm(Parms, SCP0, Req);merge_ServiceChangeParm([{audit_item, Val}|Parms], SCP0, Req) when SCP0#'ServiceChangeParm'.serviceChangeInfo == asn1_NOVALUE, atom(Val) -> SCI = #'AuditDescriptor'{auditToken = [Val]}, SCP = SCP0#'ServiceChangeParm'{serviceChangeInfo = SCI}, merge_ServiceChangeParm(Parms, SCP, Req);merge_ServiceChangeParm([{audit_item, Val}|Parms], SCP0, Req) when SCP0#'ServiceChangeParm'.serviceChangeInfo == asn1_NOVALUE,tuple(Val) -> SCI = #'AuditDescriptor'{auditPropertyToken = [Val]}, SCP = SCP0#'ServiceChangeParm'{serviceChangeInfo = SCI}, merge_ServiceChangeParm(Parms, SCP, Req);merge_ServiceChangeParm([{audit_item, Val}|Parms], SCP0, Req) when record(SCP0#'ServiceChangeParm'.serviceChangeInfo, 'AuditDescriptor'), atom(Val) -> SCI0 = SCP0#'ServiceChangeParm'.serviceChangeInfo, L = SCI0#'AuditDescriptor'.auditToken, SCI = SCI0#'AuditDescriptor'{auditToken = [Val|L]}, SCP = SCP0#'ServiceChangeParm'{serviceChangeInfo = SCI}, merge_ServiceChangeParm(Parms, SCP, Req);merge_ServiceChangeParm([{audit_item, Val}|Parms], SCP0, Req) when record(SCP0#'ServiceChangeParm'.serviceChangeInfo, 'AuditDescriptor'), tuple(Val) -> SCI0 = SCP0#'ServiceChangeParm'.serviceChangeInfo, L = SCI0#'AuditDescriptor'.auditPropertyToken, SCI = SCI0#'AuditDescriptor'{auditPropertyToken = [Val|L]}, SCP = SCP0#'ServiceChangeParm'{serviceChangeInfo = SCI}, merge_ServiceChangeParm(Parms, SCP, Req);merge_ServiceChangeParm([incomplete|Parms], SCP0, Req) when SCP0#'ServiceChangeParm'.serviceChangeIncompleteFlag == asn1_NOVALUE -> SCP = SCP0#'ServiceChangeParm'{serviceChangeIncompleteFlag = 'NULL'}, merge_ServiceChangeParm(Parms, SCP, Req);merge_ServiceChangeParm([{Tag, Val}|_Parms], SCP, _Req) -> Val2 = case Tag of address -> SCP#'ServiceChangeParm'.serviceChangeAddress; mgc_id -> SCP#'ServiceChangeParm'.serviceChangeMgcId; profile -> SCP#'ServiceChangeParm'.serviceChangeProfile; version -> SCP#'ServiceChangeParm'.serviceChangeVersion; reason -> SCP#'ServiceChangeParm'.serviceChangeReason; delay -> SCP#'ServiceChangeParm'.serviceChangeDelay; method -> SCP#'ServiceChangeParm'.serviceChangeMethod; time_stamp -> SCP#'ServiceChangeParm'.timeStamp; audit_item -> SCP#'ServiceChangeParm'.serviceChangeInfo end, exit({at_most_once_serviceChangeParm, {Tag, Val, Val2}});merge_ServiceChangeParm([Parm|_Parms], SCP, _Req) -> Parm2 = case Parm of incomplete -> SCP#'ServiceChangeParm'.serviceChangeIncompleteFlag end, exit({at_most_once_serviceChangeParm, {Parm, Parm2}}).merge_ServiceChangeResParm(Parms) -> merge_ServiceChangeResParm(Parms, #'ServiceChangeResParm'{}).merge_ServiceChangeResParm([], SCRP) -> SCRP;merge_ServiceChangeResParm([{address, Val}|Parms], SCRP0) when SCRP0#'ServiceChangeResParm'.serviceChangeAddress == asn1_NOVALUE, SCRP0#'ServiceChangeResParm'.serviceChangeMgcId == asn1_NOVALUE -> SCRP = SCRP0#'ServiceChangeResParm'{serviceChangeAddress = Val}, merge_ServiceChangeResParm(Parms, SCRP);merge_ServiceChangeResParm([{address, Val}|_Parms], SCRP0) when SCRP0#'ServiceChangeResParm'.serviceChangeAddress == asn1_NOVALUE -> MgcId = SCRP0#'ServiceChangeResParm'.serviceChangeMgcId, exit({not_both_address_mgcid_servChgReplyParm, Val, MgcId});merge_ServiceChangeResParm([{mgc_id, Val}|Parms], SCRP0) when SCRP0#'ServiceChangeResParm'.serviceChangeMgcId == asn1_NOVALUE, SCRP0#'ServiceChangeResParm'.serviceChangeAddress == asn1_NOVALUE -> SCRP = SCRP0#'ServiceChangeResParm'{serviceChangeMgcId = Val}, merge_ServiceChangeResParm(Parms, SCRP);merge_ServiceChangeResParm([{mgc_id, Val}|_Parms], SCRP0) when SCRP0#'ServiceChangeResParm'.serviceChangeMgcId == asn1_NOVALUE -> Addr = SCRP0#'ServiceChangeResParm'.serviceChangeAddress, exit({not_both_address_mgcid_servChgReplyParm, Val, Addr});merge_ServiceChangeResParm([{profile, Val}|Parms], SCRP0) when SCRP0#'ServiceChangeResParm'.serviceChangeProfile == asn1_NOVALUE -> SCRP = SCRP0#'ServiceChangeResParm'{serviceChangeProfile = Val}, merge_ServiceChangeResParm(Parms, SCRP);merge_ServiceChangeResParm([{version, Val}|Parms], SCRP0) when SCRP0#'ServiceChangeResParm'.serviceChangeVersion == asn1_NOVALUE -> SCRP = SCRP0#'ServiceChangeResParm'{serviceChangeVersion = Val}, merge_ServiceChangeResParm(Parms, SCRP);merge_ServiceChangeResParm([{time_stamp, Val}|Parms], SCRP0) when SCRP0#'ServiceChangeResParm'.timeStamp == asn1_NOVALUE -> SCRP = SCRP0#'ServiceChangeResParm'{timeStamp = Val}, merge_ServiceChangeResParm(Parms, SCRP);merge_ServiceChangeResParm([{Tag, Val}|_Parms], SCRP) -> Val2 = case Tag of address -> SCRP#'ServiceChangeResParm'.serviceChangeAddress; mgc_id -> SCRP#'ServiceChangeResParm'.serviceChangeMgcId; profile -> SCRP#'ServiceChangeResParm'.serviceChangeProfile; version -> SCRP#'ServiceChangeResParm'.serviceChangeVersion; time_stamp -> SCRP#'ServiceChangeResParm'.timeStamp end, exit({at_most_once_servChgReplyParm, {Tag, Val, Val2}}).ensure_serviceChangeMethod({safeToken, _Line, "fl"}) -> failover;ensure_serviceChangeMethod({safeToken, _Line, "failover"}) -> failover;ensure_serviceChangeMethod({safeToken, _Line, "fo"}) -> forced;ensure_serviceChangeMethod({safeToken, _Line, "forced"}) -> forced;ensure_serviceChangeMethod({safeToken, _Line, "gr"}) -> graceful;ensure_serviceChangeMethod({safeToken, _Line, "graceful"}) -> graceful;ensure_serviceChangeMethod({safeToken, _Line, "rs"}) -> restart;ensure_serviceChangeMethod({safeToken, _Line, "restart"}) -> restart;ensure_serviceChangeMethod({safeToken, _Line, "dc"}) -> disconnected;ensure_serviceChangeMethod({safeToken, _Line, "disconnected"}) -> disconnected;ensure_serviceChangeMethod({safeToken, _Line, "ho"}) -> handOff;ensure_serviceChangeMethod({safeToken, _Line, "handoff"}) -> handOff;ensure_serviceChangeMethod({safeToken, Line, Text}) -> return_error(Line, {bad_serviceChangeMethod, Text}).ensure_profile({_TokenTag, Line, Text}) -> case string:tokens(Text, [$/]) of [Name, Version] -> Version2 = ensure_version(Version), #'ServiceChangeProfile'{profileName = Name, version = Version2}; _ -> return_error(Line, {bad_profile, Text}) end.ensure_version(Version) -> ensure_uint(Version, 0, 99).merge_signalRequest(SignalName, PropertyParms) -> Sig = #'Signal'{signalName = SignalName}, SPL = [], do_merge_signalRequest(Sig, PropertyParms, SPL).do_merge_signalRequest(Sig, [H | T], SPL) -> case H of {stream, SID} when Sig#'Signal'.streamID == asn1_NOVALUE -> do_merge_signalRequest(Sig#'Signal'{streamID = SID}, T, SPL); {signal_type, SigType} when Sig#'Signal'.sigType == asn1_NOVALUE -> do_merge_signalRequest(Sig#'Signal'{sigType = SigType}, T, SPL); {duration, Duration} when Sig#'Signal'.duration == asn1_NOVALUE -> do_merge_signalRequest(Sig#'Signal'{duration = Duration}, T, SPL); {notify_completion, NC} when Sig#'Signal'.notifyCompletion == asn1_NOVALUE -> do_merge_signalRequest(Sig#'Signal'{notifyCompletion = NC}, T, SPL); keepActive when Sig#'Signal'.keepActive == asn1_NOVALUE-> do_merge_signalRequest(Sig#'Signal'{keepActive = true}, T, SPL); {other, Name, PP} -> SP = #'SigParameter'{sigParameterName = Name,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -