ptterminal.cpp
来自「基于sipfoundy 公司开发的sipx协议API」· C++ 代码 · 共 1,679 行 · 第 1/5 页
CPP
1,679 行
OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_TERMINAL, TaoMessage::GET_TERM_CONNECTIONS, transactionId, 0, //NULL (TaoObjHandle)pe, 1, 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_TERM_CONNECTIONS);#endif mpEventMgr->release(pe); TaoString argList(arg, TAOMESSAGE_DELIMITER); nItems = (argList.getCnt() - 2)/2; if (nItems < 1) return PT_NO_MORE_DATA; int cnt = (nItems > size) ? size : nItems; nItems = 0; for (int i = 0; i < cnt; i++) { UtlString name = argList[2 * i + 2]; int isLocal = atoi(argList[2 * i + 3]); PtTerminalConnection tc = PtTerminalConnection(mpClient, mTerminalName, name.data(), mTerminalName, isLocal); termConnections[i] = tc; nItems++; } return PT_SUCCESS;}PtStatus PtTerminal::getTerminalListeners(PtTerminalListener aTermListeners[], int size, int& nItems){ if (!mpClient) { return PT_NOT_FOUND; } char buff[MAXIMUM_INTEGER_STRING_LENGTH]; sprintf(buff, "%d", size); UtlString arg(buff); mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_TERMINAL, TaoMessage::GET_TERM_LISTENERS, transactionId, 0, //NULL (TaoObjHandle)pe, 1, 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::GET_TERM_LISTENERS);#endif mpEventMgr->release(pe); return PT_SUCCESS;}PtStatus PtTerminal::getProvider(PtProvider& rProvider){ if (!mpClient) { return PT_NOT_FOUND; } mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_TERMINAL, TaoMessage::GET_PROVIDER, transactionId, 0, //NULL (TaoObjHandle)pe, 0, ""); 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::GET_PROVIDER);#endif mpEventMgr->release(pe); return PT_SUCCESS;}PtStatus PtTerminal::numAddresses(int& count){ if (!mpClient) { return PT_NOT_FOUND; } UtlString arg(mTerminalName); mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_TERMINAL, TaoMessage::NUM_ADDRESSES, transactionId, 0, //NULL (TaoObjHandle)pe, 1, 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::NUM_ADDRESSES);#endif mpEventMgr->release(pe); if (!arg.isNull()) count = atoi(arg); else count = 0; return PT_SUCCESS;}PtStatus PtTerminal::numCallListeners(int& count){ if (!mpClient) { return PT_NOT_FOUND; } UtlString arg(mTerminalName); mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_TERMINAL, TaoMessage::NUM_CALL_LISTENERS, transactionId, 0, //NULL (TaoObjHandle)pe, 1, 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::NUM_CALL_LISTENERS);#endif mpEventMgr->release(pe); if (!arg.isNull()) count = atoi(arg); else count = 0; return PT_SUCCESS;}PtStatus PtTerminal::numComponents(int& count){ if (!mpClient) { return PT_NOT_FOUND; } UtlString arg(mTerminalName); // record this transaction in the transaction db mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_TERMINAL, TaoMessage::NUM_COMPONENTS, transactionId, 0, //NULL (TaoObjHandle)pe, 1, 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::NUM_COMPONENTS);#endif mpEventMgr->release(pe); if (!arg.isNull()) count = atoi(arg); else count = 0; return PT_SUCCESS;}PtStatus PtTerminal::numTerminalListeners(int& count){ if (!mpClient) { return PT_NOT_FOUND; } UtlString arg(mTerminalName); mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_TERMINAL, TaoMessage::NUM_TERM_LISTENERS, transactionId, 0, //NULL (TaoObjHandle)pe, 1, 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);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?