ptprovider.cpp
来自「基于sipfoundy 公司开发的sipx协议API」· C++ 代码 · 共 1,068 行 · 第 1/3 页
CPP
1,068 行
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::ADD_PROVIDER_LISTENER, transactionId, 0, (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::ADD_PROVIDER_LISTENER);#endif mpEventMgr->release(pe); return PT_SUCCESS;}PtStatus PtProvider::createCall(PtCall& rCall){ if (!mpClient) { return PT_NOT_FOUND; } mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PROVIDER, TaoMessage::CREATE_CALL, 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; } int rc; UtlString callId; pe->getEventData((int &)rc); pe->getStringData(callId);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::CREATE_CALL);#endif mpEventMgr->release(pe); if (!callId.isNull()) rCall = PtCall(mpClient, callId.data()); return PT_SUCCESS;}PtStatus PtProvider::getAddress(const char* phoneURL, PtAddress& rAddress){ if (!mpClient) { return PT_NOT_FOUND; } mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PROVIDER, TaoMessage::GET_ADDRESS, transactionId, 0, (TaoObjHandle)pe, 1, phoneURL); mpClient->sendRequest(msg); int rc; UtlString name; 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); pe->getStringData(name);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::GET_ADDRESS);#endif mpEventMgr->release(pe); rAddress = PtAddress(mpClient, (const char*) name); return PT_SUCCESS;}PtStatus PtProvider::getAddresses(PtAddress arAddresses[], 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_ADDRESSES, 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_ADDRESSES);#endif mpEventMgr->release(pe); int actual = ((size < nItems) ? size : nItems); TaoString taoStr(arg, TAOMESSAGE_DELIMITER);; for (int i = 0; i < actual; i++) { arAddresses[i] = PtAddress(mpClient, taoStr[i]); } return PT_SUCCESS;}PtStatus PtProvider::getCalls(PtCall arCalls[], 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_CALLS, 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_CALLS);#endif mpEventMgr->release(pe); return PT_SUCCESS;}PtStatus PtProvider::getProviderListeners(PtProviderListener* listeners[], 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_PROVIDER_LISTENERS, 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_PROVIDER_LISTENERS);#endif mpEventMgr->release(pe); return PT_SUCCESS;}int PtProvider::getState(void){ if (!mpClient) { return PT_NOT_FOUND; } mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PROVIDER, TaoMessage::GET_STATE, transactionId, 0, (TaoObjHandle)pe, 0, ""); mpClient->sendRequest(msg); int state; 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 &)state);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::GET_STATE);#endif mpEventMgr->release(pe); return state;}PtStatus PtProvider::getTerminal(const char* name, PtTerminal& rTerminal){ if (!mpClient) { return PT_NOT_FOUND; } mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PROVIDER, TaoMessage::GET_TERMINAL, transactionId, 0, (TaoObjHandle)pe, 1, name); mpClient->sendRequest(msg);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?