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

📄 taoterminalconnectionadaptor.cpp

📁 基于sipfoundy 公司开发的sipx协议API
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//// Copyright (C) 2004, 2005 Pingtel Corp.// //// $$////////////////////////////////////////////////////////////////////////#ifdef TEST#include "utl/UtlMemCheck.h"#endif#ifdef __pingtel_on_posix__#include <stdlib.h>#endif#include "tao/TaoTerminalConnectionAdaptor.h"#include "tao/TaoTransportTask.h"#include "tao/TaoString.h"#include "cp/CpCallManager.h"// TO_BE_REMOVED#include "mp/MpStreamPlaylistPlayer.h"//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////TaoTerminalConnectionAdaptor::TaoTerminalConnectionAdaptor(TaoTransportTask*& rpSvrTransport,                                                        CpCallManager *pCallMgr,                                                        TaoMessage& rMsg,                                                        const int maxRequestQMsgs)        : TaoAdaptor("TaoTermConnAdaptor-%d", maxRequestQMsgs),        mpCallMgrTask(pCallMgr){        mpSvrTransport = rpSvrTransport;        parseMessage(rMsg);        mpObjectDb  = new TaoObjectMap();        mpObjectCnt = new TaoReference();        if (!isStarted())        {                start();        }}TaoTerminalConnectionAdaptor::TaoTerminalConnectionAdaptor(TaoTransportTask*& rpSvrTransport,                                                        CpCallManager *pCallMgr,                                                        const int maxRequestQMsgs)        : TaoAdaptor("TaoTermConnAdaptor-%d", maxRequestQMsgs),        mpCallMgrTask(pCallMgr){        mpSvrTransport = rpSvrTransport;        mpObjectDb  = new TaoObjectMap();        mpObjectCnt = new TaoReference();        if (!isStarted())        {                start();        }}TaoTerminalConnectionAdaptor::~TaoTerminalConnectionAdaptor(){        if (mpObjectDb)        {                delete mpObjectDb;                mpObjectDb = 0;        }        if (mpObjectCnt)        {                delete mpObjectCnt;                mpObjectCnt = 0;        }}UtlBoolean TaoTerminalConnectionAdaptor::handleMessage(OsMsg& rMsg){        UtlBoolean handled = FALSE;        switch (((TaoMessage&)rMsg).getCmd())        {        case TaoMessage::ANSWER:                if (TAO_SUCCESS == termConnectionAnswer((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::GET_CONNECTION:                if (TAO_SUCCESS == termConnectionGetConnection((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::GET_STATE:                if (TAO_SUCCESS == termConnectionGetState((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::GET_TERMINAL:                if (TAO_SUCCESS == termConnectionGetTerminal((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::HOLD:                if (TAO_SUCCESS == termConnectionHold((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::UNHOLD:                if (TAO_SUCCESS == termConnectionUnhold((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::PLAY_FILE_NAME:                if (TAO_SUCCESS == playFileName((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::PLAY_FILE_URL:                if (TAO_SUCCESS == playFileURL((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::START_TONE:                if (TAO_SUCCESS == startTone((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::STOP_TONE:                if (TAO_SUCCESS == stopTone((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::STOP_PLAY:                if (TAO_SUCCESS == stopPlay((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;   case TaoMessage::CREATE_PLAYER:                if (TAO_SUCCESS == createPlayer((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::DESTROY_PLAYER:                if (TAO_SUCCESS == destroyPlayer((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::CREATE_PLAYLIST_PLAYER:                if (TAO_SUCCESS == createPlaylistPlayer((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::DESTROY_PLAYLIST_PLAYER:                if (TAO_SUCCESS == destroyPlaylistPlayer((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::IS_LOCAL:                if (TAO_SUCCESS == isLocal((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        default:          break;        }        if (!handled)        {                TaoMessage*     pMsg = (TaoMessage*) &rMsg;                pMsg->setArgCnt(1);                pMsg->setArgList("-1");                if (mpSvrTransport->postMessage(*pMsg))                        handled = TRUE;        }        return handled;}/* ----------------------------- TERMCONNECTION --------------------------- */TaoStatus TaoTerminalConnectionAdaptor::termConnectionAnswer(TaoMessage& rMsg){        int     argCnt = rMsg.getArgCnt();        if (argCnt != 2)                return TAO_FAILURE;        TaoString arg(rMsg.getArgList(), TAOMESSAGE_DELIMITER);        UtlString URL = arg[0];        UtlString callId = arg[1];        mpCallMgrTask->answerTerminalConnection(callId.data(), URL.data(), "");        rMsg.setMsgSubType(TaoMessage::RESPONSE_TERMCONNECTION);        if (mpSvrTransport->postMessage(rMsg))                return TAO_SUCCESS;        return TAO_FAILURE;}TaoStatus TaoTerminalConnectionAdaptor::termConnectionGetConnection(TaoMessage& rMsg){        int     argCnt = rMsg.getArgCnt();        if (argCnt != 2)                return TAO_FAILURE;        TaoString arg(rMsg.getArgList(), TAOMESSAGE_DELIMITER);        UtlString callId = arg[0];        UtlString address = arg[1];        int numConnections = 0;        mpCallMgrTask->getNumConnections(callId.data(), numConnections);        UtlString *addresses;        addresses = new UtlString[numConnections];        UtlBoolean found = FALSE;        if (addresses)        {                int maxConnections = numConnections;                mpCallMgrTask->getConnections(callId.data(), maxConnections, numConnections, addresses);                if (numConnections > maxConnections)                        numConnections = maxConnections;                for (int i = 0; i< numConnections; i++)                {                        if (!address.compareTo(addresses[i], UtlString::ignoreCase))                        {                                found = TRUE;                                break;                        }                }                rMsg.setMsgSubType(TaoMessage::RESPONSE_TERMCONNECTION);                if (found)                {                        rMsg.setArgCnt(1);                        rMsg.setArgList(callId);                }                else                {                        rMsg.setArgCnt(0);      // not found                        rMsg.setArgList("");                }                delete[] addresses;                if (mpSvrTransport->postMessage(rMsg))                        return TAO_SUCCESS;        }        return TAO_FAILURE;}TaoStatus TaoTerminalConnectionAdaptor::termConnectionGetState(TaoMessage& rMsg){        int     argCnt = rMsg.getArgCnt();        if (argCnt != 3)                return TAO_FAILURE;        rMsg.getSocket();        UtlString argList = rMsg.getArgList();        TaoString arg(argList, TAOMESSAGE_DELIMITER);        UtlString callId = arg[0];        UtlString address = arg[1];        UtlString terminal = arg[2];        int state;        if (mpCallMgrTask->getTermConnectionState(callId.data(), address.data(), terminal.data(), state))        {                char buff[MAXIMUM_INTEGER_STRING_LENGTH];                sprintf(buff, "%d", state);                argCnt = 1;                argList = buff;        }        else        {                argCnt = 0;                argList.remove(0);        }        rMsg.setMsgSubType(TaoMessage::RESPONSE_TERMCONNECTION);        rMsg.setArgCnt(argCnt);        rMsg.setArgList(argList);        if (mpSvrTransport->postMessage(rMsg))        {                return TAO_SUCCESS;        }        return TAO_FAILURE;}TaoStatus TaoTerminalConnectionAdaptor::termConnectionGetTerminal(TaoMessage& rMsg){        int     argCnt = rMsg.getArgCnt();        if (argCnt != 2)                return TAO_FAILURE;        TaoString arg(rMsg.getArgList(), TAOMESSAGE_DELIMITER);

⌨️ 快捷键说明

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