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

📄 taoaddressadaptor.cpp

📁 基于sipfoundy 公司开发的sipx协议API
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//// Copyright (C) 2004, 2005 Pingtel Corp.// //// $$//////////////////////////////////////////////////////////////////////////////#ifdef TEST#include "utl/UtlMemCheck.h"#endif#ifdef __pingtel_on_posix__#include <stdlib.h>#endif#include <utl/UtlString.h>#include "tao/TaoAddressAdaptor.h"#include "tao/TaoTransportTask.h"#include "tao/TaoString.h"#include "ptapi/PtAddress.h"#include "ptapi/PtAddressForwarding.h"#include "cp/CpCallManager.h"//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////TaoAddressAdaptor::TaoAddressAdaptor(TaoTransportTask*& rpSvrTransport,                                           CpCallManager *pCallMgr,                                           TaoMessage& rMsg,                                           const UtlString& phoneNumber,                                           const UtlString& name,                                           const int maxRequestQMsgs)        : TaoAdaptor("TaoAddressAdaptor-%d", maxRequestQMsgs){        mpCallMgr = pCallMgr;        mpSvrTransport = rpSvrTransport;        parseMessage(rMsg);        mName = new char[strlen(phoneNumber) + 1];        strcpy(mName, phoneNumber);        if (!isStarted())        {                start();        }}TaoAddressAdaptor::~TaoAddressAdaptor(){        if (mName)        {                delete[] mName;                mName = 0;        }}UtlBoolean TaoAddressAdaptor::handleMessage(OsMsg& rMsg){        UtlBoolean handled = FALSE;        switch (((TaoMessage&)rMsg).getCmd())        {        case TaoMessage::ADD_ADDRESS_LISTENER:                if (TAO_SUCCESS == addressAddAddressListener((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::ADD_CALL_LISTENER:                if (TAO_SUCCESS == addressAddCallListener((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::CANCEL_ALL_FORWARDING:                if (TAO_SUCCESS == addressCancelAllForward((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::CANCEL_FORWARDING:                if (TAO_SUCCESS == addressCancelForward((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::GET_ADDRESS_LISTENERS:                if (TAO_SUCCESS == addressGetAddrListeners((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::GET_CALL_LISTENERS:                if (TAO_SUCCESS == addressGetCallListeners((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::GET_CONNECTIONS:                if (TAO_SUCCESS == addressGetConnections((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::GET_DONOT_DISTURB:                if (TAO_SUCCESS == addressGetDoNotDisturb((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::GET_FORWARDING:                if (TAO_SUCCESS == addressGetForwarding((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::GET_MESSAGE_WAITING:                if (TAO_SUCCESS == addressGetMsgWaiting((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::GET_NAME:                if (TAO_SUCCESS == addressGetName((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::GET_OFFERED_TIMEOUT:                if (TAO_SUCCESS == addressGetOfferedTimeout((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::GET_PROVIDER:                if (TAO_SUCCESS == addressGetProvider((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::GET_TERMINALS:                if (TAO_SUCCESS == addressGetTerminals((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::NUM_ADDRESS_LISTENERS:                if (TAO_SUCCESS == addressNumAddrListeners((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::NUM_CALL_LISTENERS:                if (TAO_SUCCESS == addressNumCallListeners((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::NUM_CONNECTIONS:                if (TAO_SUCCESS == addressNumConnections((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::NUM_FORWARDS:                if (TAO_SUCCESS == addressNumForwards((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::NUM_TERMINALS:                if (TAO_SUCCESS == addressNumTerminals((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::REMOVE_ADDRESS_LISTENER:                if (TAO_SUCCESS == addressRemoveAddressListener((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::REMOVE_CALL_LISTENER:                if (TAO_SUCCESS == addressRemoveCallListener((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::SET_DONOT_DISTURB:                if (TAO_SUCCESS == addressSetDoNotDisturb((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::SET_FORWARDING:                if (TAO_SUCCESS == addressSetForwarding((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::SET_MESSAGE_WAITING:                if (TAO_SUCCESS == addressSetMsgWaiting((TaoMessage&)rMsg))                {                        handled = TRUE;                }                break;        case TaoMessage::SET_OFFERED_TIMEOUT:                if (TAO_SUCCESS == addressSetOfferedTimeout((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;}/* ----------------------------- ADDRESS ---------------------------------- */TaoStatus TaoAddressAdaptor::addressAddAddressListener(TaoMessage& rMsg){        int     argCnt = rMsg.getArgCnt();        if (argCnt != 1)                return TAO_FAILURE;        TaoObjHandle    clientSocket = rMsg.getSocket();        TaoObjHandle    msgId = rMsg.getMsgID();        TaoObjHandle    objHdl = rMsg.getTaoObjHandle();//      UtlString               listener = rMsg.getArgList();        TaoMessage*     pMsg = new TaoMessage(TaoMessage::RESPONSE_ADDRESS,                                                                        TaoMessage::ADD_ADDRESS_LISTENER,                                                                        msgId,                                                                        objHdl,                                                                        clientSocket,                                                                        0,                                                                        "");        if (mpSvrTransport->postMessage(*pMsg))        {                delete pMsg;                return TAO_SUCCESS;        }        return TAO_FAILURE;}TaoStatus TaoAddressAdaptor::addressAddCallListener(TaoMessage& rMsg){        int     argCnt = rMsg.getArgCnt();        if (argCnt != 1)                return TAO_FAILURE;        UtlString arg = "0";        if (mpListenerMgr)        {                argCnt = 0;                mpListenerMgr->addEventListener(rMsg);        }        else        {                argCnt = 1;                arg = "-1";     // indicating dailure        }        TaoObjHandle clientSocket = rMsg.getSocket();        TaoObjHandle msgId = rMsg.getMsgID();        TaoObjHandle objId = rMsg.getTaoObjHandle();        TaoMessage*     pMsg = new TaoMessage(TaoMessage::RESPONSE_ADDRESS,                                                                        TaoMessage::ADD_CALL_LISTENER,                                                                        msgId,                                                                        objId,                                                                        clientSocket,                                                                        argCnt,                                                                        arg);        if (mpSvrTransport->postMessage(*pMsg))        {                delete pMsg;                return TAO_SUCCESS;        }        return TAO_FAILURE;}TaoStatus TaoAddressAdaptor::addressCancelAllForward(TaoMessage& rMsg){        mpCallMgr->cancelAddressForwarding(0, 0);        TaoObjHandle clientSocket = rMsg.getSocket();        TaoObjHandle objId = rMsg.getTaoObjHandle();        TaoMessage*     pMsg = new TaoMessage(TaoMessage::RESPONSE_ADDRESS,                                                                        TaoMessage::CANCEL_ALL_FORWARDING,                                                                        rMsg.getMsgID(),                                                                        objId,                                                                        clientSocket,                                                                        0,                                                                        "");        if (mpSvrTransport->postMessage(*pMsg))        {                delete pMsg;                return TAO_SUCCESS;        }        return TAO_FAILURE;}TaoStatus TaoAddressAdaptor::addressCancelForward(TaoMessage& rMsg){        TaoString        argList(rMsg.getArgList(), TAOMESSAGE_DELIMITER);        int size = atoi(argList[0]);        PtAddressForwarding *pAddressForwards = new PtAddressForwarding[size];        for (int i = 0, j = 1; i < size; i++)        {                int type = atoi(argList[j]);                int filterType = atoi(argList[j + 1]);                int noAnswerTimeout = atoi(argList[j + 4]);                pAddressForwards[i] = PtAddressForwarding(argList[j + 2],                                                                                                        type,                                                                                                        filterType,                                                                                                        argList[j + 3],                                                                                                        noAnswerTimeout);                j += 5;        }        mpCallMgr->cancelAddressForwarding(size, pAddressForwards);

⌨️ 快捷键说明

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