📄 uaconfiguration.cxx
字号:
/* ==================================================================== * The Vovida Software License, Version 1.0 * * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The names "VOCAL", "Vovida Open Communication Application Library", * and "Vovida Open Communication Application Library (VOCAL)" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact vocal@vovida.org. * * 4. Products derived from this software may not be called "VOCAL", nor * may "VOCAL" appear in their name, without prior written * permission of Vovida Networks, Inc. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * ==================================================================== * * This software consists of voluntary contributions made by Vovida * Networks, Inc. and many individuals on behalf of Vovida Networks, * Inc. For more information on Vovida Networks, Inc., please see * <http://www.vovida.org/>. * */static const char* const UaConfiguration_cxx_Version = "$Id: UaConfiguration.cxx,v 1.35 2002/10/28 22:49:42 sprajpat Exp $";#include "global.h"#include <cassert>#include <cstdio>#include "cpLog.h"#include "parse3tuple.h"#include "Data.hxx"#include "UaConfiguration.hxx"using namespace Vocal;UaConfiguration* UaConfiguration::uaConfiguration = 0;UaConfiguration*UaConfiguration::instance(){ assert( uaConfiguration != 0 ); return uaConfiguration;} // UaConfiguration::instancetypedef enum{ UserNameTag = 0, DisplayNameTag, PasswordTag, LocalSipPortTag, MinRtpPortTag, MaxRtpPortTag, SipTransportTag, ProxyServerTag, RegisterOnTag, RegisterFromTag, RegisterToTag, RegisterExpiresTag, RegisterActionTag, NetworkRtpRateTag, ProvideRingbackTag, InitialDigitTimeoutTag, InterDigitTimeoutTag, DialPatternTag, SpeedDialTag, LoadGenOnTag, RunModeTag, StartTimeTag, NumKickStartsTag, CallUrlTag, NumEndpointsTag, CallDurationTag, CallDelayTag, CallRestartTimerTag, AnswerRestartTimerTag, AnswerDelayTag, MonitorMsgOnTag, MonitorMsgIntervalTag, DialNumberTag, RtpGenOnTag, NumOfCallsTag, CJTimeTag, RsvpOnTag, ProvisioningHostTag, ProvisioningPortTag, UsePolicyServerTag, UaXferModeTag, ConfServerTag, DeviceNameTag, CallWaitingOnTag, CallIdOnTag, CallIdTag, UaTimeoutTag, SubscribeOnTag, SubscribeExpireTag, SubscribeToTag, VmServerTag, LogFileNameTag, NATAddressTag, UaConfigurationTagMax} UaConfigurationTags;static const char* UaConfigurationTagString [] = { "User_Name", "Display_Name", "Pass_Word", "Local_SIP_Port", "Min_RTP_Port", "Max_RTP_Port", "SIP_Transport", "Proxy_Server", "Register_On", "Register_From", "Register_To", "Register_Expires", "Register_Action", "Network_RTP_Rate", "Provide_Ringback", "Initial_Digit_Timeout", "Inter_Digit_Timeout", "Dial_Pattern", "Speed_Dial", "LoadGen_On", "RunMode", "StartTime", "NumKickStarts", "CallUrl", "NumEndpoints", "CallDuration", "CallDelay", "CallRestartTimer", "AnswerRestartTimer", "AnswerDelay", "MonitorMsgOn", "MonitorMsgInterval", "DialNumber", "RtpGenOn", "NumOfCalls", "CJTime", "Rsvp_On", "Provisioning_Host", "Provisioning_Port", "Use_Policy_Server", "Ua_Xfer_Mode", "Conference_Server", "Device_Name", "Call_Waiting_On", "CallId_On", "CallId", "Ua_Timeout", "Subscribe_On", "Subscribe_Expires", "Subscribe_To", "VmServer", "LogFilename", "NATAddress", "Unknown" };voidUaConfiguration::parseCfgFileCallBack( char* tag, char* type, char* value ){ switch ( strConst2i( tag, UaConfigurationTagString, UaConfigurationTagMax ) ) { case UserNameTag: { UaConfiguration::instance()->setUserName( value ); } break; case DisplayNameTag: { UaConfiguration::instance()->setDisplayName( value ); } break; case PasswordTag: { UaConfiguration::instance()->setPassword( value ); } break; case LocalSipPortTag: { UaConfiguration::instance()->setLocalSipPort( value ); } break; case MinRtpPortTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setMinRtpPort( i ); } break; case MaxRtpPortTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setMaxRtpPort( i ); } break; case SipTransportTag: { UaConfiguration::instance()->setSipTransport( value ); } break; case ProxyServerTag: { UaConfiguration::instance()->setProxyServer( value ); } break; case RegisterOnTag: { UaConfiguration::instance()->setRegisterOn( isEqualNoCase( string( value ), "True" ) ); } break; case RegisterFromTag: { UaConfiguration::instance()->setRegisterFrom( value ); } break; case RegisterToTag: { UaConfiguration::instance()->setRegisterTo( value ); } break; case RegisterExpiresTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setRegisterExpires( i ); } break; case RegisterActionTag: { UaConfiguration::instance()->setRegisterAction( value ); } break; case NetworkRtpRateTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setNetworkRtpRate( i ); } break; case ProvideRingbackTag: { int flag; sscanf( value, "%d", &flag ); UaConfiguration::instance()->setProvideRingback( isEqualNoCase( string( value ), "True" ) ) ; } break; case InitialDigitTimeoutTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setInitialDigitTimeout( i ); } break; case InterDigitTimeoutTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setInterDigitTimeout( i ); } break; case DialPatternTag: { int type; char pattern[ VALUE_MAX_LENGTH ]; sscanf( value, "%d %s", &type, pattern ); UaConfiguration::instance()->addDialPattern( (DialMethodsType)type, pattern ); } break; case SpeedDialTag: { char key[ VALUE_MAX_LENGTH ]; char dest[ VALUE_MAX_LENGTH ]; sscanf( value, "%s %s", key, dest ); UaConfiguration::instance()->addSpeedDial( key, dest ); } break; case LoadGenOnTag: { UaConfiguration::instance()->setLoadGenOn( isEqualNoCase( string( value ), "True" ) ); } break; case StartTimeTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setStartTime( i ); } break; case NumKickStartsTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setNumKickStarts( i ); } break; case RunModeTag: { UaConfiguration::instance()->setRunMode( value ); } break; case CallUrlTag: { UaConfiguration::instance()->setCallUrl( value ); } break; case NumEndpointsTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setNumEndpoints(i); } break; case CallDurationTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setCallDuration(i); } break; case CallDelayTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setCallDelay(i); } break; case CallRestartTimerTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setCallRestartTimer(i); } break; case AnswerRestartTimerTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setAnswerRestartTimer( i ); } break; case AnswerDelayTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setAnswerDelay(i); } break; case MonitorMsgOnTag: { UaConfiguration::instance()->setMonitorMsgOn( isEqualNoCase( string( value ), "True" ) ); } break; case MonitorMsgIntervalTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setMonitorMsgInterval(i); } break; case DialNumberTag: { UaConfiguration::instance()->setDialNumber( value ); } break; case RtpGenOnTag: { UaConfiguration::instance()->setRtpGenOn( isEqualNoCase( string( value ), "True" ) ); } break; case NumOfCallsTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setNumOfCalls( i ); } break; case CJTimeTag: { UaConfiguration::instance()->setCJTimeOfDay( isEqualNoCase(string(value), "True") ); } break; case RsvpOnTag: { UaConfiguration::instance()->setRsvpOn( isEqualNoCase(string( value ), "True" ) ); } break; case ProvisioningHostTag: { UaConfiguration::instance()->setProvisioningHost( value ); } break; case ProvisioningPortTag: { int i; sscanf( value, "%d", &i ); UaConfiguration::instance()->setProvisioningPort( i ); } break; case UsePolicyServerTag: { UaConfiguration::instance()->setUsePolicyServer( isEqualNoCase(string( value ), "True" ) ); } break; case UaXferModeTag: { UaXferMode xfermode = XferOff; if ( string( value ) == "Transfer" ) { xfermode = XferOn; } else if ( string( value ) == "Conference" ) { xfermode = ConfOn; } UaConfiguration::instance()->setXferMode( xfermode ); } break; case ConfServerTag: { UaConfiguration::instance()->setConfServer( string(value) ); } break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -