📄 megaco_binary_transformer_v1.erl
字号:
tr_opt_ContextAttrAuditRequest(asn1_NOVALUE, _State) -> asn1_NOVALUE;tr_opt_ContextAttrAuditRequest(#'ContextAttrAuditRequest'{topology = Top, emergency = Em, priority = Prio}, State) -> #'ContextAttrAuditRequest'{topology = tr_opt_null(Top, State), emergency = tr_opt_null(Em, State), priority = tr_opt_null(Prio, State)}.tr_CommandRequest(#'CommandRequest'{command = Cmd, optional = Opt, wildcardReturn = Wild}, State) -> #'CommandRequest'{optional = tr_opt_null(Opt, State), wildcardReturn = tr_opt_null(Wild, State), command = tr_Command(Cmd, State)}.tr_Command({Tag, Val}, State) -> Val2 = case Tag of addReq -> tr_AmmRequest(Val, State); moveReq -> tr_AmmRequest(Val, State); modReq -> tr_AmmRequest(Val, State); subtractReq -> tr_SubtractRequest(Val, State); auditCapRequest -> tr_AuditRequest(Val, State); auditValueRequest -> tr_AuditRequest(Val, State); notifyReq -> tr_NotifyRequest(Val, State); serviceChangeReq -> tr_ServiceChangeRequest(Val, State) end, {Tag, Val2}.tr_CommandReply({Tag, Val}, State) -> Val2 = case Tag of addReply -> tr_AmmsReply(Val, State); moveReply -> tr_AmmsReply(Val, State); modReply -> tr_AmmsReply(Val, State); subtractReply -> tr_AmmsReply(Val, State); auditCapReply -> tr_AuditReply(Val, State); auditValueReply -> tr_AuditReply(Val, State); notifyReply -> tr_NotifyReply(Val, State); serviceChangeReply -> tr_ServiceChangeReply(Val, State) end, {Tag, Val2}.tr_TopologyRequest(#'TopologyRequest'{terminationFrom = From, terminationTo = To, topologyDirection = Dir}, State) -> Dir2 = case Dir of bothway -> bothway; isolate -> isolate; oneway -> oneway end, #'TopologyRequest'{terminationFrom = tr_TerminationID(From, State), terminationTo = tr_TerminationID(To, State), topologyDirection = Dir2}.tr_AmmRequest(#'AmmRequest'{terminationID = IdList, descriptors = DescList}, State) -> #'AmmRequest'{terminationID = [tr_TerminationID(Id, State) || Id <- IdList], descriptors = [tr_ammDescriptor(Desc, State) || Desc <- DescList]}.tr_ammDescriptor({Tag, Desc}, State) -> Desc2 = case Tag of mediaDescriptor -> tr_MediaDescriptor(Desc, State); modemDescriptor -> tr_ModemDescriptor(Desc, State); muxDescriptor -> tr_MuxDescriptor(Desc, State); eventsDescriptor -> tr_EventsDescriptor(Desc, State); eventBufferDescriptor -> tr_EventBufferDescriptor(Desc, State); signalsDescriptor -> tr_SignalsDescriptor(Desc, State); digitMapDescriptor -> tr_DigitMapDescriptor(Desc, State); auditDescriptor -> tr_AuditDescriptor(Desc, State) end, {Tag, Desc2}.tr_AmmsReply(#'AmmsReply'{terminationID = IdList, terminationAudit = TermAudit}, State) -> TermAudit2 = case TermAudit of asn1_NOVALUE -> asn1_NOVALUE; _ -> tr_TerminationAudit(TermAudit, State) end, #'AmmsReply'{terminationID = [tr_TerminationID(Id, State) || Id <- IdList], terminationAudit = TermAudit2}.tr_SubtractRequest(#'SubtractRequest'{terminationID = IdList, auditDescriptor = Desc}, State) -> #'SubtractRequest'{terminationID = [tr_TerminationID(Id, State) || Id <- IdList], auditDescriptor = tr_opt_AuditDescriptor(Desc, State)}.tr_AuditRequest(#'AuditRequest'{terminationID = Id, auditDescriptor = Desc}, State) -> #'AuditRequest'{terminationID = tr_TerminationID(Id, State), auditDescriptor = tr_AuditDescriptor(Desc, State)}.%% auditReply = (AuditValueToken / AuditCapToken ) %% ( contextTerminationAudit / auditOther)%% auditOther = EQUAL TerminationID LBRKT %% terminationAudit RBRKT%% terminationAudit = auditReturnParameter *(COMMA auditReturnParameter) %% %% contextTerminationAudit = EQUAL CtxToken ( terminationIDList / %% LBRKT errorDescriptor RBRKT )tr_AuditReply({Tag, Val}, State) -> Val2 = case Tag of contextAuditResult -> [tr_TerminationID(Id, State) || Id <- Val]; error -> tr_ErrorDescriptor(Val, State); auditResult -> tr_AuditResult(Val, State) end, {Tag, Val2}.tr_AuditResult(#'AuditResult'{terminationID = Id, terminationAuditResult = AuditRes}, State) -> #'AuditResult'{terminationID = tr_TerminationID(Id, State), terminationAuditResult = tr_TerminationAudit(AuditRes, State)}.tr_opt_AuditDescriptor(asn1_NOVALUE, _State) -> asn1_NOVALUE;tr_opt_AuditDescriptor(Desc, State) -> tr_AuditDescriptor(Desc, State).tr_AuditDescriptor(#'AuditDescriptor'{auditToken = Tokens}, State) -> Tokens2 = case Tokens of asn1_NOVALUE -> asn1_NOVALUE; _ -> [tr_auditItem(Token, State) || Token <- Tokens] end, #'AuditDescriptor'{auditToken = Tokens2}. tr_auditItem(Token, _State) -> case Token of muxToken -> muxToken; modemToken -> modemToken; mediaToken -> mediaToken; eventsToken -> eventsToken; signalsToken -> signalsToken; digitMapToken -> digitMapToken; statsToken -> statsToken; observedEventsToken -> observedEventsToken; packagesToken -> packagesToken; eventBufferToken -> eventBufferToken end.tr_TerminationAudit(ParmList, State) when list(ParmList) -> [tr_AuditReturnParameter(Parm, State) || Parm <- ParmList].tr_AuditReturnParameter({Tag, Val}, State) -> Val2 = case Tag of errorDescriptor -> tr_ErrorDescriptor(Val, State); mediaDescriptor -> tr_MediaDescriptor(Val, State); modemDescriptor -> tr_ModemDescriptor(Val, State); muxDescriptor -> tr_MuxDescriptor(Val, State); eventsDescriptor -> tr_EventsDescriptor(Val, State); eventBufferDescriptor -> tr_EventBufferDescriptor(Val, State); signalsDescriptor -> tr_SignalsDescriptor(Val, State); digitMapDescriptor -> tr_DigitMapDescriptor(Val, State); observedEventsDescriptor -> tr_ObservedEventsDescriptor(Val, State); statisticsDescriptor -> tr_StatisticsDescriptor(Val, State); packagesDescriptor -> tr_PackagesDescriptor(Val, State); emptyDescriptors -> tr_EmptyDescriptors(Val, State) end, {Tag, Val2}.tr_EmptyDescriptors(#'AuditDescriptor'{auditToken = Tokens}, State) -> case Tokens of asn1_NOVALUE -> asn1_NOVALUE; _ -> [tr_auditItem(Token, State) || Token <- Tokens] end.tr_NotifyRequest(#'NotifyRequest'{terminationID = IdList, observedEventsDescriptor = ObsDesc, errorDescriptor = ErrDesc}, State) -> %% BUGBUG: Mismatch between ASN.1 and ABNF %% BUGBUG: The following ought to be a 'choice' #'NotifyRequest'{terminationID = [tr_TerminationID(Id, State) || Id <- IdList], observedEventsDescriptor = tr_ObservedEventsDescriptor(ObsDesc, State), errorDescriptor = tr_opt_ErrorDescriptor(ErrDesc, State)}.tr_NotifyReply(#'NotifyReply'{terminationID = IdList, errorDescriptor = ErrDesc}, State) -> #'NotifyReply'{terminationID = [tr_TerminationID(Id, State) || Id <- IdList], errorDescriptor = tr_opt_ErrorDescriptor(ErrDesc, State)}.tr_ObservedEventsDescriptor(#'ObservedEventsDescriptor'{requestId = Id, observedEventLst = Events}, State) when list (Events) -> #'ObservedEventsDescriptor'{requestId = tr_RequestID(Id, State), observedEventLst = [tr_ObservedEvent(E, State) || E <- Events]}.%% ;time per event, because it might be buffered%% observedEvent = [ TimeStamp LWSP COLON] LWSP %% pkgdName [ LBRKT observedEventParameter%% *(COMMA observedEventParameter) RBRKT ]%% %% ;at-most-once eventStream, every eventParameterName at most once%% observedEventParameter = eventStream / eventOthertr_ObservedEvent(#'ObservedEvent'{eventName = Name, streamID = Id, eventParList = Parms, timeNotation = Time}, State) -> #'ObservedEvent'{eventName = tr_EventName(Name, State), streamID = tr_opt_StreamID(Id, State), eventParList = [tr_EventParameter(P, Name, State) || P <- Parms], timeNotation = tr_opt_TimeNotation(Time, State)}.tr_EventName(Name, State) -> Constraint = fun(Item) -> tr_PkgdName(Item, State) end, resolve(event, Name, State, Constraint).tr_EventParameter(#'EventParameter'{eventParameterName = ParName, value = Value, extraInfo = Extra}, EventName, State) -> %% BUGBUG: event parameter name Constraint = fun(Item) -> tr_Name(Item, State) end, N = resolve({event_parameter, EventName}, ParName, State, Constraint), #'EventParameter'{eventParameterName = N, value = tr_Value(Value, State), extraInfo = tr_opt_extraInfo(Extra, State)}.tr_ServiceChangeRequest(#'ServiceChangeRequest'{terminationID = IdList, serviceChangeParms = Parms}, State) -> #'ServiceChangeRequest'{terminationID = [tr_TerminationID(Id, State) || Id <- IdList], serviceChangeParms = tr_ServiceChangeParm(Parms, State)}.%% serviceChangeReply = ServiceChangeToken EQUAL TerminationID%% [LBRKT (errorDescriptor / %% serviceChangeReplyDescriptor) RBRKT]%% serviceChangeReplyDescriptor = ServicesToken LBRKT%% servChgReplyParm *(COMMA servChgReplyParm) RBRKT%% %% ;at-most-once. Version is REQUIRED on first ServiceChange response%% servChgReplyParm = (serviceChangeAddress / serviceChangeMgcId /%% serviceChangeProfile / serviceChangeVersion )tr_ServiceChangeReply(#'ServiceChangeReply'{terminationID = IdList, serviceChangeResult = Res}, State) -> #'ServiceChangeReply'{terminationID = [tr_TerminationID(Id, State) || Id <- IdList], serviceChangeResult = tr_ServiceChangeResult(Res, State)}.tr_ServiceChangeResult({Tag, Val}, State) -> Val2 = case Tag of errorDescriptor -> tr_ErrorDescriptor(Val, State); serviceChangeResParms -> tr_ServiceChangeResParm(Val, State) end, {Tag, Val2}.%% TerminationID = "ROOT" / pathNAME / "$" / "*"%% ; Total length of pathNAME must not exceed 64 chars.%% pathNAME = ["*"] NAME *("/" / "*"/ ALPHA / DIGIT /"_" / "$" ) %% ["@" pathDomainName ]tr_TerminationID(TermId, State) when State#state.mode /= verify -> resolve(term_id, TermId, State, valid);tr_TerminationID(#'TerminationID'{wildcard = Wild, id = Id}, _State) -> #'TerminationID'{wildcard = Wild, id = Id};tr_TerminationID(#megaco_term_id{contains_wildcards = IsWild, id = Id}, State) -> #megaco_term_id{contains_wildcards = tr_bool(IsWild, State), id = [tr_term_id_component(Sub, State) || Sub <- Id]}.tr_opt_bool(asn1_NOVALUE, _State) -> asn1_NOVALUE;tr_opt_bool(Bool, State) -> tr_bool(Bool, State).tr_bool(true, _State) -> true;tr_bool(false, _State) -> false.tr_term_id_component(Sub, _State) -> case Sub of
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -