📄 cpcallmanager.cpp
字号:
// // // 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 + -