📄 digitcollector.hxx
字号:
#ifndef DigitCollector_HXX#define DigitCollector_HXX/* ==================================================================== * 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 DigitCollector_hxx_Version = "$Id: DigitCollector.hxx,v 1.17 2002/03/19 21:40:15 jason Exp $";#include <locale.h>#include <sys/types.h>#ifdef _WIN32#define __STDC__ 1extern "C" {#include <regex.h>}#else#include <regex.h>#endif#include <string>#include <list>#include <map>#include <Sptr.hxx>#include <SipProxyEvent.hxx>#include "DigitTimeout.hxx"namespace Vocal{const string dial_ip = "IP";const string dial_phone = "phone";typedef map < string, string > SpeedDialMapType;typedef enum { WRONG_DIAL = -1, SPEED_DIAL, SPECIAL_KEY_DIAL, NORMAL_DIAL, INTERNAL_IP_DIAL, CALL_RETURN_DIAL, URL_DIAL, INCOMPLETE_DIAL} DialMethodsType;class DialingPlan{ public: DialingPlan(string pattern, DialMethodsType method); DialingPlan(const DialingPlan& src); bool operator ==(const DialingPlan& dialPlan ) const; void operator =(const DialingPlan& src); DialMethodsType getDialMethod() const { return dialMethod; }; const string& getDialPattern() const { return dialPattern; }; private: string dialPattern; DialMethodsType dialMethod;};typedef list < const DialingPlan* > DialingPlanListType;///class DigitCollector{ public: DigitCollector( Sptr < Fifo < Sptr < SipProxyEvent > > > cpq ); void reset(); // Restart timer void clear(); // Stop timer void addDigit( char digit ); bool isValidDial(); bool isDialTimeout(); string getDial(); string getUrl(); void setDestHostIpAddr(string& ipAddr) { destHostIpAddr = ipAddr; }; void setSipPortNum(string& sipPort ) { sipPortNum = sipPort; }; void addDialPlan(const DialingPlan* dialingPlan); void addSpeedDial(const string& key, const string& phoneNum); void addIncomingUrl( const string& url ); void setInitTimeout(int timeout) { interDigitTimeout->setInitTimeout(timeout); }; void setInterDigitTimeout(int timeout) { interDigitTimeout->setInterDigitTimeout(timeout); }; string getDialMethod() { return dialedType; }; void setDialedUrl(const string& url); private: string getUrlFromSpeedDial(); string getUrlFromIpAddr(); string getUrlFromPhoneNumDial(); string getUrlFromSpecKeyDial(); string getCallReturnUrl(); void flushDialPlan(); DialMethodsType findDialPlan(); string dial; bool isNewDigit; DialMethodsType dialMethod; unsigned int maxDialPatternLen; string dialedType; SpeedDialMapType speedDialMap; DialingPlanListType dialingPlanList; string destHostIpAddr; string sipPortNum; string myDialedUrl; //stores the url of the last few incoming calls list < string > prevInUrls; //inter-digit timeout fifo Sptr < DigitTimeout > interDigitTimeout; /// Sptr < Fifo < Sptr < SipProxyEvent > > > callProcessingQueue; static const unsigned int MAX_PREV_IN_URLS_SIZE;};}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -