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 + -
显示快捷键?