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

📄 cpcallmanager.h

📁 基于sipfoundy 公司开发的sipx协议API
💻 H
📖 第 1 页 / 共 3 页
字号:
// // // 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)#ifndef _CpCallManager_h_#define _CpCallManager_h_// SYSTEM INCLUDES//#include <...>// APPLICATION INCLUDES#include <os/OsServerTask.h>#include <os/OsRWMutex.h>#include "os/OsProtectEvent.h"#include "os/OsQueuedEvent.h"#include "ptapi/PtEvent.h"#include "ptapi/PtDefs.h"#include "net/SipMessage.h"#include "net/SipContactDb.h"#include "net/SipDialog.h"// DEFINES// MACROS// EXTERNAL FUNCTIONS// EXTERNAL VARIABLES// CONSTANTS// STRUCTS// TYPEDEFS// FORWARD DECLARATIONSclass CpCall;class CpMediaInterface;class PtAddressForwarding;class SipSession;class SipDialog;#ifndef EXCLUDE_STREAMINGclass MpStreamPlayer;class MpStreamPlaylistPlayer;#endifclass OsEvent;//! Abstract call manager/*! There are three major components to the call management system: *\par * Call management methods *\par * Call model events *\par * Abstract media control interface. * \par * The call management methods provide the means to perform call * control operations and poll call state. The call model events * provide the means to listen for call model state changes. The * abstract media control interface provides the means to override * the media subsystem. * \par * Due to the transient nature of the objects in the call model, * handles or names are used to represent the actual objects. * Operations are performed on these objects via the Call Manager * by naming the object(s) when invoking a method. * /par * The INFINITY.0 APIs above use the same call model used in JTAPI *(as defined by the Enterprise Computer Telephony Forum). The * primary objects defined in this model are: *\par * call *\par * connection *\par * address *\par * terminal *\par * terminal connection. * \par * A call contains zero or more connections. A connection is * associated with an address (that is, a SIP URL). A terminal * connection is the relationship between a connection and a * terminal. * \par * Call Model state changes are notified through an event handler. *  The event handler is a sub-class of TaoAdaptor that implements * the handleMessage method.  This method must implement actions or * state caching of events of interest to the application.  The * events that are notified from the call manager subsystem are * enumerated in PtEvent. */class CpCallManager : public OsServerTask{/* //////////////////////////// PUBLIC //////////////////////////////////// */public:#ifndef DOXYGEN_SHOULD_SKIP_THIS    enum EventSubTypes        {        CP_UNSPECIFIED = SipMessage::NET_UNSPECIFIED,        CP_SIP_MESSAGE = SipMessage::NET_SIP_MESSAGE,        CP_CALL_EXITED,        CP_DIAL_STRING,        CP_FOCUS_CALL,        CP_HOLD_CALL,        CP_OFF_HOLD_CALL,        CP_DEQUEUED_CALL,        CP_MGCP_MESSAGE,        CP_MGCP_CAPS_MESSAGE,        CP_YIELD_FOCUS,  //10        CP_GET_FOCUS,        CP_CREATE_CALL,        CP_GET_CALLS,        CP_CONNECT,        CP_SINGLE_CALL_TRANSFER,        CP_BLIND_TRANSFER,        CP_CONSULT_TRANSFER,        CP_TRANSFER_CONNECTION,        CP_TRANSFER_CONNECTION_STATUS,        CP_TRANSFEREE_CONNECTION, //20        CP_TRANSFEREE_CONNECTION_STATUS,        CP_DROP,        CP_DROP_CONNECTION,        CP_FORCE_DROP_CONNECTION,        CP_ANSWER_CONNECTION,        CP_ACCEPT_CONNECTION,        CP_REJECT_CONNECTION,        CP_REDIRECT_CONNECTION,        CP_GET_NUM_CONNECTIONS,        CP_GET_CONNECTIONS, //30        CP_GET_CALLED_ADDRESSES,        CP_GET_CALLING_ADDRESSES,        CP_START_TONE_TERM_CONNECTION,        CP_STOP_TONE_TERM_CONNECTION,        CP_PLAY_AUDIO_TERM_CONNECTION,        CP_STOP_AUDIO_TERM_CONNECTION,        CP_GET_NUM_TERM_CONNECTIONS,        CP_GET_TERM_CONNECTIONS,        CP_IS_LOCAL_TERM_CONNECTION,        CP_HOLD_TERM_CONNECTION, //40        CP_UNHOLD_TERM_CONNECTION,        CP_UNHOLD_LOCAL_TERM_CONNECTION,        CP_HOLD_LOCAL_TERM_CONNECTION,        CP_OFFERING_EXPIRED,        CP_RINGING_EXPIRED,        CP_GET_CALLSTATE,        CP_GET_CONNECTIONSTATE,        CP_GET_TERMINALCONNECTIONSTATE,        CP_GET_SESSION,        CP_GET_INVITE,                 //50        CP_HOLD_ALL_TERM_CONNECTIONS,        CP_UNHOLD_ALL_TERM_CONNECTIONS,        CP_CANCEL_TIMER,        CP_GET_NEXT_CSEQ,        CP_SET_PREMIUM_SOUND_CALL,        CP_ADD_TONE_LISTENER,        CP_REMOVE_TONE_LISTENER,        CP_ENABLE_DTMF_EVENT,        CP_DISABLE_DTMF_EVENT,        CP_REMOVE_DTMF_EVENT,          //60        CP_EZRECORD,        CP_PLAY_BUFFER_TERM_CONNECTION,        CP_CREATE_PLAYER,        CP_DESTROY_PLAYER,        CP_CREATE_PLAYLIST_PLAYER,        CP_DESTROY_PLAYLIST_PLAYER,        CP_CREATE_QUEUE_PLAYER,        CP_DESTROY_QUEUE_PLAYER,        CP_RENEGOTIATE_CODECS_CONNECTION,        CP_RENEGOTIATE_CODECS_ALL_CONNECTIONS,  //70        CP_SET_CODEC_CPU_LIMIT,        CP_GET_CODEC_CPU_COST,        CP_GET_CODEC_CPU_LIMIT,        CP_SET_INBOUND_CODEC_CPU_LIMIT,        CP_STOPRECORD,        CP_SET_OUTBOUND_LINE,        CP_GET_LOCAL_CONTACTS,        CP_OUTGOING_INFO,        CP_GET_MEDIA_CONNECTION_ID,        CP_ENABLE_STUN,                //80        CP_GET_CAN_ADD_PARTY,        CP_SPLIT_CONNECTION,        CP_JOIN_CONNECTION,        CP_CONSULT_TRANSFER_ADDRESS,        CP_SEND_SIP_REQUEST,        CP_NEW_PASSERTED_ID,        CP_SET_MEDIA_PROPERTY    };/*        enum metaEventType    {        META_EVENT_NONE = 0,                META_EVENT_TRANSFER,        META_EVENT_CONFERENCE,        META_EVENT_MERGE,                META_EVENT_CALL_START,                META_EVENT_CALL_END,                META_EVENT_CALL_PROGRESS,                META_EVENT_CALL_ADDITIONAL_PARTY,                META_EVENT_CALL_REMOVING_PARTY,                META_EVENT_SNAPSHOT,                META_EVENT_UNKNOWN    };*/#endif // DOXYGEN_SHOULD_SKIP_THIS    enum CallTypes    {        SIP_CALL = 0,        MGCP_CALL    };    enum CallHoldType    {        NEAR_END_HOLD = 0,        FAR_END_HOLD    };    enum CpStatus    {        CP_SUCCESS = 0,        CP_FAILED,        CP_INVALID_IP_ADDRESS,        CP_INVALID_SIP_DIRECTORY_SERVER,        CP_INVALID_SIP_URL    };/* ============================ CREATORS ================================== */    //! Default constructor    CpCallManager(const char* taskName,                 const char* callIdPrefix,                 int rtpPortStart = 8766,                 int rtpPortEnd = -1,                 const char* localAddress = NULL,                 const char* publicAddress = NULL);    //! Destructor    virtual    ~CpCallManager();/* ============================ MANIPULATORS ============================== */    static void getEventSubTypeString(EventSubTypes type,                                      UtlString& typeString);    //! Set the default address for the local connection.    /*! This is used to set the calling ID information when     * making an outbound call.     */    virtual void setOutboundLine(const char* lineUrl) = 0;    /** @name For internal use only     * These should be private methods, but due to the structure     * of how they are used they must be public.     */    //@{    //! For internal use only    virtual UtlBoolean handleMessage(OsMsg& eventMessage) = 0;    //! For internal use only    virtual void getNewCallId(UtlString* callId);    //! Generate a new Call-Id with the specified prefix.    static void getNewCallId(const char* callIdPrefix, UtlString* callId);    //! For internal use only    void getNewSessionId(UtlString* sessionId);    //! For internal use only    int getNewMetaEventId();    //@}    //! Register a TAO (telephony application objects) listener for    //! call and connection events.    virtual OsStatus addTaoListener(OsServerTask* pListener,                                                                        char* callId = NULL,                                                                        int ConnectId = 0,                                                                        int mask = 0) = 0;    /** @name Call Operations     */    //@{

⌨️ 快捷键说明

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