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

📄 cpcallmanager.cpp

📁 基于sipfoundy 公司开发的sipx协议API
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// // // Copyright (C) 2005-2006 SIPez LLC.// Licensed to SIPfoundry under a Contributor Agreement.// // Copyright (C) 2004-2006 SIPfoundry Inc.// Licensed by SIPfoundry under the LGPL license.// // Copyright (C) 2004-2006 Pingtel Corp.// Licensed to SIPfoundry under a Contributor Agreement.// // $$//////////////////////////////////////////////////////////////////////////////// Author: Dan Petrie (dpetrie AT SIPez DOT com)// SYSTEM INCLUDES#include "os/OsDefs.h"#include <assert.h>// APPLICATION INCLUDES#include <cp/CpCallManager.h>#include <cp/CpCall.h>#include <net/NetMd5Codec.h>#include <os/OsLock.h>#include <os/OsDateTime.h>#include <os/OsSocket.h>#include <os/OsSysLog.h>#include <os/OsReadLock.h>#include <os/OsWriteLock.h>#include <os/OsProcess.h>#include "ptapi/PtAddressForwarding.h"// EXTERNAL FUNCTIONS// EXTERNAL VARIABLES// CONSTANTS// STATIC VARIABLE INITIALIZATIONS#ifdef __pingtel_on_posix__ /* [ */const int    CpCallManager::CALLMANAGER_MAX_REQUEST_MSGS = 6000;#elseconst int    CpCallManager::CALLMANAGER_MAX_REQUEST_MSGS = 1000;#endif  INT64 CpCallManager::mCallNum = 0;OsMutex CpCallManager::mCallNumMutex(OsMutex::Q_FIFO);/* //////////////////////////// PUBLIC //////////////////////////////////// *//* ============================ CREATORS ================================== */// ConstructorCpCallManager::CpCallManager(const char* taskName,                             const char* callIdPrefix,                             int rtpPortStart,                             int rtpPortEnd,                             const char* localAddress,                             const char* publicAddress) :OsServerTask(taskName, NULL, CALLMANAGER_MAX_REQUEST_MSGS),mManagerMutex(OsMutex::Q_FIFO),mCallListMutex(OsMutex::Q_FIFO),mCallIndices(),mAddressForwardMutex(OsMutex::Q_FIFO){   mCallNum = 0;    mpAddressForwards = 0;    mDoNotDisturbFlag = FALSE;    mMsgWaitingFlag = FALSE;    mOfferedTimeOut = 0;    mAddressForwardingCnt = 0;   if(callIdPrefix)   {       mCallIdPrefix.append(callIdPrefix);   }   mRtpPortStart = rtpPortStart;   mRtpPortEnd = rtpPortEnd;   if(localAddress && *localAddress)   {       mLocalAddress.append(localAddress);   }   else   {       OsSocket::getHostIp(&mLocalAddress);   }   if(publicAddress && *publicAddress)   {       mPublicAddress.append(publicAddress);   }   else   {       OsSocket::getHostIp(&mPublicAddress);   }   mLastMetaEventId = 0;}// Copy constructorCpCallManager::CpCallManager(const CpCallManager& rCpCallManager) :OsServerTask("badCallManagerCopy"),mManagerMutex(OsMutex::Q_FIFO),mCallListMutex(OsMutex::Q_FIFO),mAddressForwardMutex(OsMutex::Q_FIFO){    // Copy of call manager not supported    assert(0);}// DestructorCpCallManager::~CpCallManager(){    if (mpAddressForwards)    {        delete mpAddressForwards;        mpAddressForwards = 0;        mAddressForwardingCnt = 0;    }}/* ============================ MANIPULATORS ============================== */void CpCallManager::getEventSubTypeString(EventSubTypes type,                                          UtlString& typeString){    switch(type)    {      case CP_UNSPECIFIED:        typeString = "CP_UNSPECIFIED";        break;      case CP_SIP_MESSAGE:        typeString = "CP_SIP_MESSAGE";        break;      case CP_CALL_EXITED:        typeString = "CP_CALL_EXITED";        break;      case CP_DIAL_STRING:        typeString = "CP_DIAL_STRING";        break;      case CP_FOCUS_CALL:        typeString = "CP_FOCUS_CALL";        break;      case CP_HOLD_CALL:        typeString = "CP_HOLD_CALL";        break;      case CP_OFF_HOLD_CALL:        typeString = "CP_OFF_HOLD_CALL";        break;      case CP_DEQUEUED_CALL:        typeString = "CP_DEQUEUED_CALL";        break;      case CP_MGCP_MESSAGE:        typeString = "CP_MGCP_MESSAGE";        break;      case CP_MGCP_CAPS_MESSAGE:        typeString = "CP_MGCP_CAPS_MESSAGE";        break;      case CP_YIELD_FOCUS:        typeString = "CP_YIELD_FOCUS";        break;      case CP_GET_FOCUS:        typeString = "CP_GET_FOCUS";        break;      case CP_CREATE_CALL:        typeString = "CP_CREATE_CALL";        break;      case CP_GET_CALLS:        typeString = "CP_GET_CALLS";        break;      case CP_CONNECT:        typeString = "CP_CONNECT";        break;      case CP_SINGLE_CALL_TRANSFER:        typeString = "CP_SINGLE_CALL_TRANSFER";        break;      case CP_BLIND_TRANSFER:        typeString = "CP_BLIND_TRANSFER";        break;      case CP_CONSULT_TRANSFER:        typeString = "CP_CONSULT_TRANSFER";        break;      case CP_CONSULT_TRANSFER_ADDRESS:          typeString = "CP_CONSULT_TRANSFER_ADDRESS";        break;      case CP_TRANSFER_CONNECTION:        typeString = "CP_TRANSFER_CONNECTION";        break;      case CP_TRANSFER_CONNECTION_STATUS:        typeString = "CP_TRANSFER_CONNECTION_STATUS";        break;      case CP_TRANSFEREE_CONNECTION:        typeString = "CP_TRANSFEREE_CONNECTION";        break;      case CP_TRANSFEREE_CONNECTION_STATUS:        typeString = "CP_TRANSFEREE_CONNECTION_STATUS";        break;      case CP_DROP:        typeString = "CP_DROP";        break;      case CP_DROP_CONNECTION:        typeString = "CP_DROP_CONNECTION";        break;      case CP_FORCE_DROP_CONNECTION:        typeString = "CP_FORCE_DROP_CONNECTION";        break;      case CP_ANSWER_CONNECTION:        typeString = "CP_ANSWER_CONNECTION";        break;      case CP_ACCEPT_CONNECTION:        typeString = "CP_ACCEPT_CONNECTION";        break;      case CP_REJECT_CONNECTION:        typeString = "CP_REJECT_CONNECTION";        break;      case CP_REDIRECT_CONNECTION:        typeString = "CP_REDIRECT_CONNECTION";        break;      case CP_GET_NUM_CONNECTIONS:        typeString = "CP_GET_NUM_CONNECTIONS";        break;      case CP_GET_CONNECTIONS:        typeString = "CP_GET_CONNECTIONS";        break;      case CP_GET_CALLED_ADDRESSES:        typeString = "CP_GET_CALLED_ADDRESSES";        break;       case CP_GET_CALLING_ADDRESSES:        typeString = "CP_GET_CALLING_ADDRESSES";        break;      case CP_START_TONE_TERM_CONNECTION:        typeString = "CP_START_TONE_TERM_CONNECTION";        break;      case CP_STOP_TONE_TERM_CONNECTION:        typeString = "CP_STOP_TONE_TERM_CONNECTION";        break;      case CP_PLAY_AUDIO_TERM_CONNECTION:        typeString = "CP_PLAY_AUDIO_TERM_CONNECTION";        break;      case CP_STOP_AUDIO_TERM_CONNECTION:        typeString = "CP_STOP_AUDIO_TERM_CONNECTION";        break;      case CP_CREATE_PLAYER:        typeString = "CP_CREATE_PLAYER";        break;      case CP_DESTROY_PLAYER:        typeString = "CP_DESTROY_PLAYER";        break;      case CP_CREATE_PLAYLIST_PLAYER:        typeString = "CP_CREATE_PLAYLIST_PLAYER";        break;      case CP_DESTROY_PLAYLIST_PLAYER:        typeString = "CP_DESTROY_PLAYLIST_PLAYER";        break;      case CP_GET_NUM_TERM_CONNECTIONS:        typeString = "CP_GET_NUM_TERM_CONNECTIONS";        break;      case CP_GET_TERM_CONNECTIONS:        typeString = "CP_GET_TERM_CONNECTIONS";        break;      case CP_IS_LOCAL_TERM_CONNECTION:        typeString = "CP_IS_LOCAL_TERM_CONNECTION";        break;      case CP_HOLD_TERM_CONNECTION:        typeString = "CP_HOLD_TERM_CONNECTION";        break;      case CP_UNHOLD_TERM_CONNECTION:        typeString = "CP_UNHOLD_TERM_CONNECTION";        break;      case CP_UNHOLD_LOCAL_TERM_CONNECTION:        typeString = "CP_UNHOLD_LOCAL_TERM_CONNECTION";        break;      case CP_HOLD_LOCAL_TERM_CONNECTION:        typeString = "CP_HOLD_LOCAL_TERM_CONNECTION";        break;       case CP_OFFERING_EXPIRED:        typeString = "CP_OFFERING_EXPIRED";        break;      case CP_RINGING_EXPIRED:        typeString = "CP_RINGING_EXPIRED";        break;      case CP_GET_CALLSTATE:        typeString = "CP_GET_CALLSTATE";        break;      case CP_GET_CONNECTIONSTATE:        typeString = "CP_GET_CONNECTIONSTATE";        break;      case CP_GET_TERMINALCONNECTIONSTATE:        typeString = "CP_GET_TERMINALCONNECTIONSTATE";        break;      case CP_GET_SESSION:        typeString = "CP_GET_SESSION";        break;     case CP_HOLD_ALL_TERM_CONNECTIONS:        typeString = "CP_HOLD_ALL_TERM_CONNECTIONS";        break;     case CP_UNHOLD_ALL_TERM_CONNECTIONS:        typeString = "CP_HOLD_ALL_TERM_CONNECTIONS";        break ;      case CP_CANCEL_TIMER:        typeString = "CP_CANCEL_TIMER";        break;       case CP_GET_NEXT_CSEQ:        typeString = "CP_GET_NEXT_CSEQ";        break;      default:        typeString = "?";        break;    }}// Assignment operator

⌨️ 快捷键说明

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