📄 megaco_text_gen_v1.hrl
字号:
?ObservedEventsToken;enc_auditReturnItem(packagesToken, _State) -> ?PackagesToken.enc_TerminationAudit({'TerminationAudit',Val}, State) -> enc_TerminationAudit(Val, State);enc_TerminationAudit([], _State) -> [];enc_TerminationAudit([Mand | Opt], State) -> [enc_AuditReturnParameter(Mand, State), [[?COMMA_INDENT(State), enc_AuditReturnParameter(Val, State)] || Val <- Opt]].enc_AuditReturnParameter({'AuditReturnParameter',Val}, State) -> enc_AuditReturnParameter(Val, State);enc_AuditReturnParameter({Tag, Val}, State) -> case Tag of mediaDescriptor -> enc_MediaDescriptor(Val, State); modemDescriptor -> enc_ModemDescriptor(Val, State); muxDescriptor -> enc_MuxDescriptor(Val, State); eventsDescriptor -> enc_EventsDescriptor(Val, State); signalsDescriptor -> enc_SignalsDescriptor(Val, State); digitMapDescriptor -> enc_DigitMapDescriptor(Val, State); observedEventsDescriptor -> enc_ObservedEventsDescriptor(Val, State); eventBufferDescriptor -> enc_EventBufferDescriptor(Val, State); statisticsDescriptor -> enc_StatisticsDescriptor(Val, State); packagesDescriptor -> enc_PackagesDescriptor(Val, State); errorDescriptor -> enc_ErrorDescriptor(Val, State); emptyDescriptors -> enc_EmptyDescriptors(Val, State); _ -> error({unknown_AuditReturnParameter_tag, Tag}) end.enc_EmptyDescriptors(#'AuditDescriptor'{auditToken = asn1_NOVALUE}, _State) -> [];enc_EmptyDescriptors(#'AuditDescriptor'{auditToken = []}, _State) -> [];enc_EmptyDescriptors(#'AuditDescriptor'{auditToken = List}, State) -> enc_list([{List, fun enc_auditReturnItem/2}], ?INC_INDENT(State)).enc_NotifyRequest(Val, State) when record(Val, 'NotifyRequest') -> [ %% Assume that Token is added elsewhere ?EQUAL, enc_TerminationIDList1(Val#'NotifyRequest'.terminationID, State), ?LBRKT_INDENT(State), %% BUGBUG: Mismatch between ASN.1 and ABNF %% BUGBUG: The following ought to be a 'choice' case Val#'NotifyRequest'.errorDescriptor of asn1_NOVALUE -> OED = Val#'NotifyRequest'.observedEventsDescriptor, enc_ObservedEventsDescriptor(OED, ?INC_INDENT(State)); ErrorDescr -> enc_ErrorDescriptor(ErrorDescr, ?INC_INDENT(State)) end, ?RBRKT_INDENT(State) ].enc_NotifyReply(Val, State) when record(Val, 'NotifyReply') -> [ %% Assume that Token is added elsewhere ?EQUAL, case Val#'NotifyReply'.terminationID of asn1_NOVALUE -> error(asn1_not_compliant_with_abnf); TermId -> enc_TerminationIDList1(TermId, State) end, case Val#'NotifyReply'.errorDescriptor of asn1_NOVALUE -> []; ErrorDescr -> [ ?LBRKT_INDENT(State), enc_ErrorDescriptor(ErrorDescr, ?INC_INDENT(State)), ?RBRKT_INDENT(State) ] end ].enc_ObservedEventsDescriptor(Val, State) when record(Val, 'ObservedEventsDescriptor') -> [ ?ObservedEventsToken, ?EQUAL, enc_RequestID(Val#'ObservedEventsDescriptor'.requestId, State), ?LBRKT_INDENT(State), enc_observedEventsDescriptors(Val#'ObservedEventsDescriptor'.observedEventLst, ?INC_INDENT(State)), ?RBRKT_INDENT(State) ].enc_observedEventsDescriptors([Mand | Opt], State) -> [enc_ObservedEvent(Mand, State), [[?COMMA_INDENT(State), enc_ObservedEvent(Val, State)] || Val <- Opt]].%% ;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 / eventOtherenc_ObservedEvent(Val, State) when record(Val, 'ObservedEvent') -> [ case Val#'ObservedEvent'.timeNotation of asn1_NOVALUE -> []; TimeStamp -> [ enc_TimeNotation(TimeStamp, State), ?LWSP, ?COLON ] end, ?LWSP, enc_EventName(Val#'ObservedEvent'.eventName, State), enc_opt_brackets( enc_list([{[Val#'ObservedEvent'.streamID], fun enc_eventStream/2}, {Val#'ObservedEvent'.eventParList, fun enc_eventOther/2}], ?INC_INDENT(State)), State) ].enc_EventName({'EventName',Val}, State) -> enc_EventName(Val, State);enc_EventName(Val, State) -> PkgdName = ?META_ENC(event, Val), enc_PkgdName(PkgdName, State).enc_eventStream(Val, State) -> [ ?StreamToken, ?EQUAL, enc_StreamID(Val, State) ].enc_eventOther(#'EventParameter'{eventParameterName = Name, value = Value, extraInfo = Extra}, State) -> [ enc_Name(Name, State), enc_propertyParmValues(Value, Extra, State) ].enc_ServiceChangeRequest(Val, State) when record(Val, 'ServiceChangeRequest') -> [ %% Assume that Token is added elsewhere ?EQUAL, enc_TerminationIDList1(Val#'ServiceChangeRequest'.terminationID, State), ?LBRKT_INDENT(State), enc_ServiceChangeParm(Val#'ServiceChangeRequest'.serviceChangeParms, ?INC_INDENT(State)), ?RBRKT_INDENT(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 )enc_ServiceChangeReply(Val, State) when record(Val, 'ServiceChangeReply') -> [ %% Assume that Token is added elsewhere ?EQUAL, enc_TerminationIDList1(Val#'ServiceChangeReply'.terminationID, State), enc_ServiceChangeResult(Val#'ServiceChangeReply'.serviceChangeResult, State) ].enc_ServiceChangeResult({'ServiceChangeResult',Val}, State) -> enc_ServiceChangeResult(Val, State);enc_ServiceChangeResult({Tag, Val}, State) -> case Tag of errorDescriptor -> [ ?LBRKT_INDENT(State), enc_ErrorDescriptor(Val, ?INC_INDENT(State)), ?RBRKT_INDENT(State) ]; serviceChangeResParms -> case enc_ServiceChangeResParm(Val, ?INC_INDENT(?INC_INDENT(State))) of [] -> []; ResParms -> [ ?LBRKT_INDENT(State), ?ServicesToken, fun(_S) -> [ ?LBRKT_INDENT(_S), ResParms, ?RBRKT_INDENT(_S) ] end(?INC_INDENT(State)), ?RBRKT_INDENT(State) ] end; _ -> error({invalid_ServiceChangeResult_tag, Tag}) end.%% Required length of termination ID list is 1enc_TerminationIDList1({'TerminationIDList',Val}, State) -> enc_TerminationIDList1(Val, State);enc_TerminationIDList1([Singleton], State) -> enc_TerminationID(Singleton, State).%% No required length of termination ID listenc_TerminationIDListN({'TerminationIDList',Val}, State) -> enc_TerminationIDListN(Val, State);enc_TerminationIDListN([TID], State) -> [ ?LBRKT_INDENT(State), enc_TerminationID(TID, State), ?RBRKT_INDENT(State) ];enc_TerminationIDListN(TIDs, State) -> [ ?LBRKT_INDENT(State), enc_list([{TIDs, fun enc_TerminationID/2}], State), ?RBRKT_INDENT(State) ].%% TerminationID = "ROOT" / pathNAME / "$" / "*"%% ; Total length of pathNAME must not exceed 64 chars.%% pathNAME = ["*"] NAME *("/" / "*"/ ALPHA / DIGIT /"_" / "$" ) %% ["@" pathDomainName ]enc_TerminationID(Tid, State) when record(Tid, megaco_term_id) -> List = [{Tid#megaco_term_id.id, fun enc_tid_component/2 }], enc_list(List, State, fun(_S) -> ?SLASH end, false). enc_tid_component(Component, State) when list(Component) -> [enc_tid_sub_component(Sub, State) || Sub <- Component];enc_tid_component(Invalid, _State) -> error({invalid_id_list_component, Invalid}).enc_tid_sub_component(Sub, _State) -> case Sub of all -> ?megaco_all; choose -> ?megaco_choose; Char when integer(Char) -> Char end.%% mediaDescriptor = MediaToken LBRKT mediaParm *(COMMA mediaParm) RBRKT%% ; at-most-once per item%% ; and either streamParm or streamDescriptor but not both%% mediaParm = (streamParm / streamDescriptor / %% terminationStateDescriptor)%% ; at-most-once%% streamParm = ( localDescriptor / remoteDescriptor / %% localControlDescriptor )%% streamDescriptor = StreamToken EQUAL StreamID LBRKT streamParm %% *(COMMA streamParm) RBRKTenc_MediaDescriptor(Val, State) when record(Val, 'MediaDescriptor') -> [ ?MediaToken, ?LBRKT_INDENT(State), enc_list([{[Val#'MediaDescriptor'.termStateDescr], fun enc_TerminationStateDescriptor/2} | decompose_streams(Val#'MediaDescriptor'.streams)], ?INC_INDENT(State)), ?RBRKT_INDENT(State) ].decompose_streams(asn1_NOVALUE) -> [];decompose_streams({'MediaDescriptor_streams',Val}) -> decompose_streams(Val);decompose_streams({Tag, Val}) -> case Tag of oneStream -> decompose_StreamParms(Val); multiStream -> [{Val, fun enc_StreamDescriptor/2}]; _ -> error({invalid_streams_tag, Tag}) end.decompose_StreamParms(Val) when record(Val, 'StreamParms') -> [ {[Val#'StreamParms'.localControlDescriptor], fun enc_LocalControlDescriptor/2}, {[Val#'StreamParms'.localDescriptor], fun enc_localDescriptor/2}, {[Val#'StreamParms'.remoteDescriptor], fun enc_remoteDescriptor/2} ].enc_StreamDescriptor(Val, State) when record(Val, 'StreamDescriptor') -> [ ?StreamToken, ?EQUAL, enc_StreamID(Val#'StreamDescriptor'.streamID, State), ?LBRKT_INDENT(State), enc_list(decompose_StreamParms(Val#'StreamDescriptor'.streamParms), ?INC_INDENT(State)), ?RBRKT_INDENT(State) ].%% localControlDescriptor = LocalControlToken LBRKT localParm %% *(COMMA localParm) RBRKT%% %% ; at-most-once per item%% localParm = ( streamMode / propertyParm /%% reservedValueMode / reservedGroupMode ) %% reservedValueMode = ReservedValueToken EQUAL ( "ON" / "OFF" ) %% reservedGroupMode = ReservedGroupToken EQUAL ( "ON" / "OFF" ) %% %% reservedMode = ReservedToken EQUAL ( "ON" / "OFF" )%% %% streamMode = ModeToken EQUAL streamModesenc_LocalControlDescriptor( #'LocalControlDescriptor'{streamMode = asn1_NOVALUE, reserveValue = asn1_NOVALUE, reserveGroup = asn1_NOVALUE, propertyParms = []}, _State) -> error({invalid_LocalControlDescriptor, empty});enc_LocalControlDescriptor( #'LocalControlDescriptor'{streamMode = SM, reserveValue = RV, reserveGroup = RG, propertyParms = PPs}, State) -> [ ?LocalControlToken, ?LBRKT_INDENT(State), enc_list([{[SM], fun enc_StreamMode/2}, {[RG], fun enc_reservedGroupMode/2}, {[RV], fun enc_reservedValueMode/2}, {PPs, fun enc_PropertyParm/2}], ?INC_INDENT(State)), ?RBRKT_INDENT(State) ].enc_reservedGroupMode(Val, _State) -> [ ?ReservedGroupToken, ?EQUAL, case Val of false -> ?OffToken; true -> ?OnToken end ].enc_reservedValueMode(Val, _State) -> [ ?ReservedValueToken, ?EQUAL, case Val of false -> ?OffToken; true -> ?OnToken end ].enc_StreamMode({'StreamMode',Val}, State) -> enc_StreamMode(Val, State);enc_StreamMode(Val, _State) -> [ ?ModeToken, ?EQUAL, case Val of sendOnly -> ?SendonlyToken; recvOnly -> ?RecvonlyToken; sendRecv -> ?SendrecvToken; inactive -> ?InactiveToken; loopBack -> ?LoopbackToken end ].enc_Name({'Name',Val}, State) -> enc_Name(Val, State);enc_Name(Val, State) -> %% BUGBUG: NAME = ALPHA *63(ALPHA / DIGIT / "_" ) enc_STRING(Val, State, 1, 64).enc_PkgdName({'PkgdName', Val}, State) -> enc_PkgdName(Val, State);enc_PkgdName(Val, State) -> %% BUGBUG: pkgdName = (NAME / "*") SLASH (ItemID / "*" ) enc_OCTET_STRING(Val, State, 1, 64).enc_localDescriptor(Val, State) when record(Val, 'LocalRemoteDescriptor') -> [ ?LocalToken, ?LBRKT, enc_LocalRemoteDescriptor(Val, State), ?RBRKT_INDENT(State) ].enc_remoteDescriptor(Val, State) when record(Val, 'LocalRemoteDescriptor') -> [ ?RemoteToken, ?LBRKT, enc_LocalRemoteDescriptor(Val, State), ?RBRKT_INDENT(State) ].%% When text encoding the protocol, the descriptors consist of session%% descriptions as defined in SDP (RFC2327), except that the "s=", "t="%% and "o=" lines are optional. When multiple session descriptions are%% provided in one descriptor, the "v=" lines are required as delimiters;%% otherwise they are optional. Implementations shall accept session%% descriptions that are fully conformant to RFC2327. When binary%% encoding the protocol the descriptor consists of groups of properties%% (tag-value pairs) as specified in Annex C. Each such group may%% contain the parameters of a session description.enc_LocalRemoteDescriptor(Val, State) when record(Val, 'LocalRemoteDescriptor') -> case Val#'LocalRemoteDescriptor'.propGrps of [] -> []; [OptV | MandV] -> [?LfToken, enc_PropertyGroup(OptV, opt_v, State) | [enc_PropertyGroup(M, mand_v, State) || M <- MandV]] end.enc_PropertyGroup({'PropertyGroup',Val}, RequiresV, State) -> enc_PropertyGroup(Val, RequiresV, State);enc_PropertyGroup([H | _T] = List, mand_v, State) when record(H, 'PropertyParm'), H#'PropertyParm'.name == "v" -> enc_PropertyGroup(List, opt_v, State);enc_PropertyGroup(PG, opt_v, State) -> [ [[enc_PropertyGroupParm(PP, State), ?CrToken, ?LfToken] || PP <- PG] ].enc_PropertyGroupParm(Val, State) when record(Val, 'PropertyParm') -> [OctetString] = Val#'PropertyParm'.value,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -