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

📄 megaco_session_internalizer.erl

📁 一个Megaco实现源代码
💻 ERL
📖 第 1 页 / 共 4 页
字号:
							      evParList   = Parms,							      eventAction = Actions},                        State) ->    #'SecondRequestedEvent'{pkgdName    = tr_PkgdName(Name, State),                            streamID    = tr_opt_StreamID(Id, State),                            eventAction = tr_opt_SecondRequestedActions(Actions, State),                            evParList   = [tr_EventParameter(P, Name, State) || P <- Parms]}.tr_opt_SecondRequestedActions(#'MegacoMessage_OptSecondRequestedActions'{label = false}, State) ->    asn1_NOVALUE;tr_opt_SecondRequestedActions(#'MegacoMessage_OptSecondRequestedActions'{label = true,                                                                         value = Val}, State) ->    tr_SecondRequestedActions(Val, State).tr_SecondRequestedActions(#'MegacoMessage_SecondRequestedActions'{keepActive        = Keep,								  eventDM           = DM,								  signalsDescriptor = SigDesc},                          State) ->    #'SecondRequestedActions'{keepActive        = tr_opt_bool(Keep, State),                              eventDM           = tr_opt_EventDM(DM, State),                              signalsDescriptor = tr_opt_SignalsDescriptor(SigDesc, State)}.tr_EventBufferDescriptor(EventSpecs, State) ->    [tr_EventSpec(ES, State) || ES <- EventSpecs].tr_EventSpec(#'MegacoMessage_EventSpec'{name         = Name,                                        streamID     = Id,                                        eventParList = Parms},             State) ->    #'EventSpec'{eventName    = tr_EventName(Name, State),                 streamID     = tr_opt_StreamID(Id, State),                 eventParList = [tr_EventParameter(P, Name, State) || P <- Parms]}.tr_opt_SignalsDescriptor(#'MegacoMessage_OptSignalsDescriptor'{label = false}, State) ->    asn1_NOVALUE;tr_opt_SignalsDescriptor(#'MegacoMessage_OptSignalsDescriptor'{label = true,							       value = Val}, State) ->    tr_SignalsDescriptor(Val, State).tr_SignalsDescriptor(SigDesc, State) ->    [tr_SignalRequest(SigReq, State) || SigReq <- SigDesc].tr_SignalRequest(#'MegacoMessage_SignalRequestUnion'{label = Tag, value = Val}, State) ->    case Tag of        'SignalRequestChoice_signal' ->            {signal, tr_Signal(Val, State)};        'SignalRequestChoice_seqSigList' ->            {seqSigList, tr_SeqSigList(Val, State)}    end.tr_SeqSigList(#'MegacoMessage_SeqSigList'{id         = Id,                                          signalList = SigList},              State) when list(SigList) ->    #'SeqSigList'{id         = Id,                  signalList = [tr_Signal(Sig, State) || Sig <- SigList]}.tr_Signal(#'MegacoMessage_Signal'{name             = Name,                                  streamID         = Id,                                  sigType          = Type,                                  duration         = Dur,                                  notifyCompletion = Compl,                                  keepActive       = Keep,                                  sigParList       = Parms},          State) ->    #'Signal'{signalName       = tr_SignalName(Name, State),              streamID         = tr_opt_StreamID(Id, State),              sigType          = tr_opt_SignalType(Type, State),              duration         = tr_opt_unsigned_short(Dur, State),              notifyCompletion = tr_opt_NotifyCompletion(Compl, State),              keepActive       = tr_opt_bool(Keep, State),              sigParList       = [tr_SigParameter(P, Name, State) || P <- Parms]}.tr_opt_NotifyCompletion(#'MegacoMessage_OptNotifyCompletion'{label = false}, State) ->    asn1_NOVALUE;tr_opt_NotifyCompletion(#'MegacoMessage_OptNotifyCompletion'{label = true,                                                             value = Val}, State) ->    tr_NotifyCompletion(Val, State).tr_NotifyCompletion(Items, State) ->    [tr_notifyCompletionItem(I, State) || I <- Items].tr_notifyCompletionItem(Item, State) ->    case Item of        'NotifyCompletionBits_onTimeOut'                   -> onTimeOut;        'NotifyCompletionBits_onInterruptByEvent'          -> onInterruptByEvent;        'NotifyCompletionBits_onInterruptByNewSignalDescr' -> onInterruptByNewSignalDescr;        'NotifyCompletionBits_otherReason'                 -> otherReason    end.tr_opt_SignalType(#'MegacoMessage_OptSignalType'{label = false}, State) ->    asn1_NOVALUE;tr_opt_SignalType(#'MegacoMessage_OptSignalType'{label = true,						 value = Val}, State) ->    tr_SignalType(Val, State).tr_SignalType(Type, State) ->    case Type of        'SignalType_brief'   -> brief;        'SignalType_onOff'   -> onOff;        'SignalType_timeOut' -> timeOut    end.tr_SignalName(Name, State) ->    tr_PkgdName(Name, State).tr_SigParameter(#'MegacoMessage_SigParameter'{sigParameterName  = ParName,                                              sigParameterValue = Value,                                              extraInfo         = Extra},                SigName,                State) ->    #'SigParameter'{sigParameterName = tr_Name(ParName, State),                    value            = tr_Value(Value, State),                    extraInfo        = tr_opt_extraInfo(Extra, State)}.tr_opt_RequestID(#'MegacoMessage_OptRequestID'{label = false}, State) ->    asn1_NOVALUE;tr_opt_RequestID(#'MegacoMessage_OptRequestID'{label = true,                                               value = Val}, State) ->    tr_RequestID(Val, State).tr_RequestID(Id, State) ->    Id.tr_ModemDescriptor(#'MegacoMessage_ModemDescriptor'{mtl = Types,                                                    mpl = Props},                   State) when list(Types), list(Props) ->    #'ModemDescriptor'{mtl = [tr_ModemType(T, State) || T <- Types],                       mpl = [tr_PropertyParm(P, State) || P <- Props]}.tr_ModemType(Type, State) ->    case Type of        'ModemType_v18'       -> v18;        'ModemType_v22'       -> v22;        'ModemType_v22bis'    -> v22bis;        'ModemType_v32'       -> v32;        'ModemType_v32bis'    -> v32bis;        'ModemType_v34'       -> v34;        'ModemType_v90'       -> v90;        'ModemType_v91'       -> v91;        'ModemType_synchISDN' -> synchISDN    end.tr_DigitMapDescriptor(#'MegacoMessage_DigitMapDescriptor'{digitMapName  = Name,                                                          digitMapValue = Value},                      State) ->    #'DigitMapDescriptor'{digitMapName  = tr_opt_DigitMapName(Name, State),                          digitMapValue = tr_opt_DigitMapValue(Value, State)}.tr_opt_DigitMapName(#'MegacoMessage_OptDigitMapName'{label = false}, State) ->    asn1_NOVALUE;tr_opt_DigitMapName(#'MegacoMessage_OptDigitMapName'{label = true,                                                     value = Val}, State) ->    tr_DigitMapName(Val, State).tr_DigitMapName(Name, State) ->    tr_Name(Name, State).tr_opt_DigitMapValue(#'MegacoMessage_OptDigitMapValue'{label = false}, State) ->    asn1_NOVALUE;tr_opt_DigitMapValue(#'MegacoMessage_OptDigitMapValue'{label = true,                                                       value = Val}, State) ->    tr_DigitMapValue(Val, State).tr_DigitMapValue(#'MegacoMessage_DigitMapValue'{digitMapBody = Body,                                                startTimer   = Start,                                                shortTimer   = Short,                                                longTimer    = Long},                 State) ->    #'DigitMapValue'{startTimer   = tr_opt_unsigned_short(Start, State),                     shortTimer   = tr_opt_unsigned_short(Short, State),                     longTimer    = tr_opt_unsigned_short(Long, State),                     digitMapBody = Body}.tr_ServiceChangeParm(#'MegacoMessage_ServiceChangeParm'{method    = Method,                                                        address   = Addr,                                                        version   = Version,                                                        profile   = Profile,                                                        reason    = Reason,                                                        delay     = Delay,                                                        mgcId     = MgcId,                                                        timeStamp = Time},                     State) ->    #'ServiceChangeParm'{serviceChangeMethod  = tr_ServiceChangeMethod(Method, State),                         serviceChangeAddress = tr_opt_ServiceChangeAddress(Addr, State),                         serviceChangeVersion = tr_opt_serviceChangeVersion(Version, State),                         serviceChangeProfile = tr_opt_ServiceChangeProfile(Profile, State),                         serviceChangeReason  = tr_serviceChangeReason(Reason, State),                         serviceChangeDelay   = tr_opt_unsigned_long(Delay, State),                         serviceChangeMgcId   = tr_opt_serviceChangeMgcId(MgcId, State),                         timeStamp            = tr_opt_TimeNotation(Time, State)}.tr_ServiceChangeMethod(Method, State) ->    case Method of        'ServiceChangeMethod_failover'      -> failover;        'ServiceChangeMethod_forced'        -> forced;        'ServiceChangeMethod_graceful'      -> graceful;        'ServiceChangeMethod_restart'       -> restart;        'ServiceChangeMethod_disconnected'  -> disconnected;        'ServiceChangeMethod_handOff'       -> handOff    end. %% BUGBUG: extensiontr_opt_ServiceChangeAddress(#'MegacoMessage_OptServiceChangeAddressUnion'{label = false}, State) ->    asn1_NOVALUE;tr_opt_ServiceChangeAddress(#'MegacoMessage_OptServiceChangeAddressUnion'{label = Tag, value = Val}, State) ->    tr_ServiceChangeAddress(Val, State).tr_ServiceChangeAddress(#'MegacoMessage_ServiceChangeAddressUnion'{label = Tag, value = Val}, State) ->    case Tag of        'OptServiceChangeAddressChoice_portNumber' ->            {portNumber, tr_portNumber(Val, State)};        'OptServiceChangeAddressChoice_ip4Address' ->            {ip4Address, tr_IP4Address(Val, State)};        'OptServiceChangeAddressChoice_ip6Address' ->            {ip6Address, tr_IP6Address(Val, State)};        'OptServiceChangeAddressChoice_domainName' ->            {domainName, tr_DomainName(Val, State)};        'OptServiceChangeAddressChoice_deviceName' ->            {deviceName, tr_PathName(Val, State)};        'OptServiceChangeAddressChoice_mtpAddress' ->            {mtpAddress, tr_mtpAddress(Val, State)}    end.tr_opt_serviceChangeVersion(Version, State) ->    tr_opt_unsigned_short(Version, State).tr_opt_ServiceChangeProfile(#'MegacoMessage_OptServiceChangeProfile'{label = false}, State) ->    asn1_NOVALUE;tr_opt_ServiceChangeProfile(#'MegacoMessage_OptServiceChangeProfile'{label = true, value = Val}, State) ->    tr_ServiceChangeProfile(Val, State).tr_ServiceChangeProfile(#'MegacoMessage_ServiceChangeProfile'{profileName = Name, version     = Version}, State) ->    #'ServiceChangeProfile'{profileName = tr_Name(Name, State),                            version     = tr_version(Version, State)}.tr_serviceChangeReason(Reason, State) ->    tr_Value(Reason, State).tr_opt_serviceChangeMgcId(#'MegacoMessage_OptMIdUnion'{label = false}, State) ->    asn1_NOVALUE;tr_opt_serviceChangeMgcId(#'MegacoMessage_OptMIdUnion'{label = true,                                                       value = MgcId}, State) ->    tr_MId(MgcId, State).tr_opt_unsigned_short(#'MegacoMessage_OptUnsignedShort'{label = false}, State) ->    asn1_NOVALUE;tr_opt_unsigned_short(#'MegacoMessage_OptUnsignedShort'{label = true, value = Val}, State) ->    Val.tr_opt_unsigned_long(#'MegacoMessage_OptUnsignedLong'{label = false}, State) ->    asn1_NOVALUE;tr_opt_unsigned_long(#'MegacoMessage_OptUnsignedLong'{label = true, value = Val}, State) ->    Val.tr_portNumber(Port, State) ->    Port.tr_ServiceChangeResParm(#'MegacoMessage_ServiceChangeResParm'{mgcId     = MgcId,                                                              address   = Addr,                                                              version   = Version,                                                              profile   = Profile,                                                              timeStamp = Time},                        State) ->    #'ServiceChangeResParm'{serviceChangeMgcId     = tr_opt_serviceChangeMgcId(MgcId, State),                            serviceChangeAddress   = tr_opt_ServiceChangeAddress(Addr, State),                            serviceChangeVersion   = tr_opt_serviceChangeVersion(Version, State),                            serviceChangeProfile   = tr_opt_ServiceChangeProfile(Profile, State),                            timeStamp              = tr_opt_TimeNotation(Time, State)}.tr_PackagesDescriptor(Items, State)  ->    [tr_PackagesItem(I, State) || I <- Items].tr_PackagesItem(#'MegacoMessage_PackagesItem'{packageName    = Name,                                              packageVersion = Version},                State) ->    #'PackagesItem'{packageName    = tr_Name(Name, State),                    packageVersion = Version}.tr_StatisticsDescriptor(Parms, State) ->    [tr_StatisticsParameter(P, State) || P <- Parms].tr_StatisticsParameter(#'MegacoMessage_StatisticsParameter'{statName  = Name,                                                            statValue = Value},                       State) ->    #'StatisticsParameter'{statName  = tr_PkgdName(Name, State),                           statValue = tr_opt_Value(Value, State)}.tr_opt_TimeNotation(#'MegacoMessage_OptTimeNotation'{label = false}, State) ->    asn1_NOVALUE;tr_opt_TimeNotation(#'MegacoMessage_OptTimeNotation'{label = true,                                     value = Val},                    State) ->   tr_TimeNotation(Val, State).tr_TimeNotation(#'MegacoMessage_TimeNotation'{date = Date, time = Time}, State) ->    #'TimeNotation'{date = Date, time = Time}.tr_opt_Value(#'MegacoMessage_OptValue'{label = false}, State) ->    asn1_NOVALUE;tr_opt_Value(#'MegacoMessage_OptValue'{label = true,                                       value = Value}, State) ->    tr_Value(Value, State).tr_Value(Strings, State) ->    Strings.

⌨️ 快捷键说明

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