ptprovider.cpp
来自「基于sipfoundy 公司开发的sipx协议API」· C++ 代码 · 共 1,068 行 · 第 1/3 页
CPP
1,068 行
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; } TaoObjHandle rObjHandle; pe->getEventData((int &)rObjHandle); UtlString terminalName; pe->getStringData(terminalName);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::GET_TERMINAL);#endif mpEventMgr->release(pe); rTerminal = PtTerminal(name, mpClient); return PT_SUCCESS;}PtStatus PtProvider::getTerminals(PtTerminal arTerms[], 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_PROVIDER, TaoMessage::GET_TERMINALS, transactionId, 0, (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; } pe->getEventData(nItems); pe->getStringData((UtlString &)arg);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::GET_TERMINALS);#endif mpEventMgr->release(pe); int actual = ((size < nItems) ? size : nItems); TaoString taoStr(arg, TAOMESSAGE_DELIMITER);; for (int i = 0; i < actual; i++) { arTerms[i] = PtTerminal(taoStr[i], mpClient); } return PT_SUCCESS;}PtStatus PtProvider::numAddresses(int& count){ if (!mpClient) { return PT_NOT_FOUND; } mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PROVIDER, TaoMessage::NUM_ADDRESSES, transactionId, 0, (TaoObjHandle)pe, 0, ""); 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; } pe->getEventData(count);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::NUM_ADDRESSES);#endif mpEventMgr->release(pe); return PT_SUCCESS;}PtStatus PtProvider::numCalls(int& count){ if (!mpClient) { return PT_NOT_FOUND; } mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PROVIDER, TaoMessage::NUM_CALLS, transactionId, 0, (TaoObjHandle)pe, 0, ""); 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; } pe->getEventData(count);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::NUM_CALLS);#endif mpEventMgr->release(pe); return PT_SUCCESS;}PtStatus PtProvider::numProviderListeners(int& count){ if (!mpClient) { return PT_NOT_FOUND; } mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PROVIDER, TaoMessage::NUM_PROVIDER_LISTENERS, transactionId, 0, (TaoObjHandle)pe, 0, ""); 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; } pe->getEventData(count);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::NUM_PROVIDER_LISTENERS);#endif mpEventMgr->release(pe); return PT_SUCCESS;}PtStatus PtProvider::numTerminals(int& count){ if (!mpClient) { return PT_NOT_FOUND; } mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PROVIDER, TaoMessage::NUM_TERMINALS, transactionId, 0, (TaoObjHandle)pe, 0, ""); 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; } pe->getEventData(count);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::NUM_TERMINALS);#endif mpEventMgr->release(pe); return PT_SUCCESS;}PtStatus PtProvider::removeProviderListener(PtProviderListener& rListener){ if (!mpClient) { return PT_NOT_FOUND; } char buff[MAXIMUM_INTEGER_STRING_LENGTH]; sprintf(buff, "%d", (int)&rListener); UtlString arg(buff); mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PROVIDER, TaoMessage::REMOVE_PROVIDER_LISTENER, transactionId, 0, (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; } int rc; pe->getEventData((int &)rc);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::REMOVE_PROVIDER_LISTENER);#endif mpEventMgr->release(pe); return PT_SUCCESS;}PtStatus PtProvider::shutdown(void){ if (!mpClient) { return PT_NOT_FOUND; } mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PROVIDER, TaoMessage::SHUTDOWN, transactionId, 0, (TaoObjHandle)pe, 0, ""); mpClient->sendRequest(msg); // Should something be done with pe? return PT_SUCCESS;}/* ============================ INQUIRY =================================== *//* //////////////////////////// PROTECTED ///////////////////////////////// */// Assignment operatorPtProvider&PtProvider::operator=(const PtProvider& rhs){ if (this == &rhs) // handle the assignment to self case return *this; spInstance = rhs.spInstance; // pointer to the single instance of mpClient = rhs.mpClient; if (mpClient && !(mpClient->isStarted())) { mpClient->start(); } mLogin = rhs.mLogin; mPass = rhs.mPass; mState = rhs.mState; mTimeOut = rhs.mTimeOut; return *this;}/* //////////////////////////// PRIVATE /////////////////////////////////// *//* ============================ FUNCTIONS ================================= */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?