ptterminalconnection.cpp

来自「基于sipfoundy 公司开发的sipx协议API」· C++ 代码 · 共 1,027 行 · 第 1/3 页

CPP
1,027
字号
{        EVENT_TRACE("Entering PtTerminalConnection::getState\n") ;        mpTransactionCnt->add();        unsigned int transactionId = mpTransactionCnt->getRef();        UtlString arg;        if (!mCallId.isNull() && (!mAddress.isNull() || !mTerminalName.isNull()))        {                arg = mCallId + TAOMESSAGE_DELIMITER + mAddress + TAOMESSAGE_DELIMITER + mTerminalName;        }        else                return PT_NO_MORE_DATA;        OsProtectedEvent *pe = mpEventMgr->alloc();        TaoMessage      msg(TaoMessage::REQUEST_TERMCONNECTION,                                                                        TaoMessage::GET_STATE,                                                                        transactionId,                                                                        0,                                                                        (TaoObjHandle)pe,                                                                        3,                                                                        arg);        mpClient->sendRequest(msg);        if (OS_SUCCESS != pe->wait(msg.getCmd(), mTimeOut))        {                mpClient->resetConnectionSocket(msg.getMsgID());        // If the event has already been signalled, clean up        if(OS_ALREADY_SIGNALED == pe->signal(0))        {            mpEventMgr->release(pe);        }                return PT_BUSY;        }        int rc;        int argCnt = 0;        pe->getEventData((int &)rc);        pe->getIntData(argCnt);        pe->getStringData(arg);#ifdef PTAPI_TEST        int cmd;        pe->getIntData2(cmd);        assert(cmd == TaoMessage::GET_STATE);#endif        mpEventMgr->release(pe);        PtStatus ret = PT_SUCCESS;        if (argCnt == 1)        {                mState = rState = atoi(arg.data());        }        else                ret = PT_NOT_FOUND;        EVENT_TRACE("Exiting PtTerminalConnection::getState\n") ;        return ret;}PtStatus PtTerminalConnection::getTerminal(PtTerminal& rTerminal){        EVENT_TRACE("Entering PtTerminalConnection::getTerminal\n") ;        UtlString arg = mCallId + TAOMESSAGE_DELIMITER + mTerminalName;        mpTransactionCnt->add();        unsigned int transactionId = mpTransactionCnt->getRef();        OsProtectedEvent *pe = mpEventMgr->alloc();        TaoMessage      msg(TaoMessage::REQUEST_TERMCONNECTION,                                                                        TaoMessage::GET_TERMINAL,                                                                        transactionId,                                                                        0,                                                                        (TaoObjHandle)pe,                                                                        2,                                                                        arg);        mpClient->sendRequest(msg);        if (OS_SUCCESS != pe->wait(msg.getCmd(), mTimeOut))        {                mpClient->resetConnectionSocket(msg.getMsgID());        // If the event has already been signalled, clean up        if(OS_ALREADY_SIGNALED == pe->signal(0))        {            mpEventMgr->release(pe);        }                return PT_BUSY;        }        arg.remove(0);        pe->getStringData((UtlString &)arg);#ifdef PTAPI_TEST        int cmd;        pe->getIntData2(cmd);        assert(cmd == TaoMessage::GET_TERMINAL);#endif        mpEventMgr->release(pe);        PtStatus rc = PT_SUCCESS;        if (!arg.isNull())        {                rTerminal = PtTerminal(mTerminalName.data(), mpClient);        }        else        {                rc = PT_NO_MORE_DATA;        }        EVENT_TRACE("Exiting PtTerminalConnection::getTerminal\n") ;        return rc;}PtStatus PtTerminalConnection::getTerminalName(UtlString& rTerminalName){        rTerminalName.remove(0);        rTerminalName.append(mTerminalName);        return PT_SUCCESS;}PtStatus PtTerminalConnection::getAddressName(UtlString& rAddress){        rAddress.remove(0);        rAddress.append(mAddress);        return PT_SUCCESS;}PtStatus PtTerminalConnection::getCallId(UtlString& rCallId){        rCallId.remove(0);        rCallId.append(mCallId);        return PT_SUCCESS;}PtStatus PtTerminalConnection::startTone(int toneId, UtlBoolean local,                      UtlBoolean remote, const char* locale){        EVENT_TRACE("Entering PtTerminalConnection::startTone\n") ;    char buff[MAXIMUM_INTEGER_STRING_LENGTH];    sprintf(buff, "%d", toneId);        UtlString arg(buff);    sprintf(buff, "%d", (int)local);        arg += TAOMESSAGE_DELIMITER + buff;    sprintf(buff, "%d", (int)remote);        arg += TAOMESSAGE_DELIMITER + buff;        arg += TAOMESSAGE_DELIMITER + mCallId;        int     cnt = 4;        if (locale)        {                cnt = 5;                arg += TAOMESSAGE_DELIMITER + locale;        }        mpTransactionCnt->add();        unsigned int transactionId = mpTransactionCnt->getRef();        OsProtectedEvent *pe = mpEventMgr->alloc();        TaoMessage      msg(TaoMessage::REQUEST_TERMCONNECTION,                                                                        TaoMessage::START_TONE,                                                                        transactionId,                                                                        0,                                                                        (TaoObjHandle)pe,                                                                        cnt,                                                                        arg);        mpClient->sendRequest(msg);        int rc;        if (OS_SUCCESS != pe->wait(msg.getCmd(), mTimeOut))        {                mpClient->resetConnectionSocket(msg.getMsgID());        // If the event has already been signalled, clean up        if(OS_ALREADY_SIGNALED == pe->signal(0))        {            mpEventMgr->release(pe);        }                return PT_BUSY;        }        pe->getEventData((int &)rc);#ifdef PTAPI_TEST        int cmd;        pe->getIntData2(cmd);        assert(cmd == TaoMessage::START_TONE);#endif        mpEventMgr->release(pe);        EVENT_TRACE("Exiting PtTerminalConnection::startTone\n") ;        return PT_SUCCESS;}PtStatus PtTerminalConnection::stopTone(void){        EVENT_TRACE("Entering PtTerminalConnection::stopTone\n") ;        mpTransactionCnt->add();        unsigned int transactionId = mpTransactionCnt->getRef();        OsProtectedEvent *pe = mpEventMgr->alloc();        TaoMessage      msg(TaoMessage::REQUEST_TERMCONNECTION,                                                                        TaoMessage::STOP_TONE,                                                                        transactionId,                                                                        0,                                                                        (TaoObjHandle)pe,                                                                        1,                                                                        mCallId);        mpClient->sendRequest(msg);        int rc;        if (OS_SUCCESS != pe->wait(msg.getCmd(), mTimeOut))        {                mpClient->resetConnectionSocket(msg.getMsgID());        // If the event has already been signalled, clean up        if(OS_ALREADY_SIGNALED == pe->signal(0))        {            mpEventMgr->release(pe);        }                return PT_BUSY;        }        pe->getEventData((int &)rc);#ifdef PTAPI_TEST        int cmd;        pe->getIntData2(cmd);        assert(cmd == TaoMessage::STOP_TONE);#endif        mpEventMgr->release(pe);        EVENT_TRACE("Exiting PtTerminalConnection::stopTone\n") ;        return PT_SUCCESS;}PtStatus PtTerminalConnection::playFile(const char* audioFileName, UtlBoolean repeat,                     UtlBoolean local, UtlBoolean remote){        EVENT_TRACE("Entering PtTerminalConnection::playFile\n") ;    char buff[MAXIMUM_INTEGER_STRING_LENGTH];        UtlString arg(audioFileName);    sprintf(buff, "%d", (int)repeat);        arg += TAOMESSAGE_DELIMITER + buff;    sprintf(buff, "%d", (int)local);        arg += TAOMESSAGE_DELIMITER + buff;    sprintf(buff, "%d", (int)remote);        arg += TAOMESSAGE_DELIMITER + buff;        arg += TAOMESSAGE_DELIMITER + mCallId;        mpTransactionCnt->add();        unsigned int transactionId = mpTransactionCnt->getRef();        OsProtectedEvent *pe = mpEventMgr->alloc();        TaoMessage      msg(TaoMessage::REQUEST_TERMCONNECTION,                                                                        TaoMessage::PLAY_FILE_NAME,                                                                        transactionId,                                                                        0,                                                                        (TaoObjHandle)pe,                                                                        5,                                                                        arg);        mpClient->sendRequest(msg);        int rc;        if (OS_SUCCESS != pe->wait(msg.getCmd(), mTimeOut))        {                mpClient->resetConnectionSocket(msg.getMsgID());        // If the event has already been signalled, clean up        if(OS_ALREADY_SIGNALED == pe->signal(0))        {            mpEventMgr->release(pe);        }                return PT_BUSY;        }        pe->getEventData((int &)rc);#ifdef PTAPI_TEST        int cmd;        pe->getIntData2(cmd);        assert(cmd == TaoMessage::PLAY_FILE_NAME);#endif        mpEventMgr->release(pe);        EVENT_TRACE("Exiting PtTerminalConnection::playFile\n") ;        return PT_SUCCESS;}PtStatus PtTerminalConnection::playFile(FILE* audioFilePtr, UtlBoolean repeat,                 UtlBoolean local, UtlBoolean remote){        EVENT_TRACE("Entering PtTerminalConnection::playFile\n") ;   char buff[MAXIMUM_INTEGER_STRING_LENGTH];   sprintf(buff, "%d", (int)audioFilePtr);        UtlString arg(buff);    sprintf(buff, "%d", (int)repeat);        arg += TAOMESSAGE_DELIMITER + buff;    sprintf(buff, "%d", (int)local);        arg += TAOMESSAGE_DELIMITER + buff;    sprintf(buff, "%d", (int)remote);        arg += TAOMESSAGE_DELIMITER + buff;        arg += TAOMESSAGE_DELIMITER + mCallId;        mpTransactionCnt->add();        unsigned int transactionId = mpTransactionCnt->getRef();        OsProtectedEvent *pe = mpEventMgr->alloc();        TaoMessage      msg(TaoMessage::REQUEST_TERMCONNECTION,                                                                        TaoMessage::PLAY_FILE_URL,                                                                        transactionId,                                                                        0,                                                                        (TaoObjHandle)pe,                                                                        1,                                                                        mCallId);        mpClient->sendRequest(msg);        int rc;        if (OS_SUCCESS != pe->wait(msg.getCmd(), mTimeOut))        {                mpClient->resetConnectionSocket(msg.getMsgID());        // If the event has already been signalled, clean up        if(OS_ALREADY_SIGNALED == pe->signal(0))        {            mpEventMgr->release(pe);        }                return PT_BUSY;        }        pe->getEventData((int &)rc);#ifdef PTAPI_TEST        int cmd;        pe->getIntData2(cmd);        assert(cmd == TaoMessage::PLAY_FILE_URL);#endif

⌨️ 快捷键说明

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