ptterminal.cpp
来自「基于sipfoundy 公司开发的sipx协议API」· C++ 代码 · 共 1,679 行 · 第 1/5 页
CPP
1,679 行
#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::NUM_TERM_LISTENERS);#endif mpEventMgr->release(pe); if (!arg.isNull()) count = atoi(arg); else count = 0; return PT_SUCCESS;}PtStatus PtTerminal::numTerminalConnections(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_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::NUM_TERM_CONNECTIONS);#endif mpEventMgr->release(pe); if (!arg.isNull()) count = atoi(arg); else count = 0; return PT_SUCCESS;}PtStatus PtTerminal::pickup(PtAddress& rPickupAddress, PtAddress& rTerminalAddress, PtTerminalConnection*& rpNewTermConnection){ if (!mpClient) { return PT_NOT_FOUND; } UtlString addr = "9385306"; //fake UtlString term = "12.1.1.1"; //fake UtlString arg = addr + TAOMESSAGE_DELIMITER + term; mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_TERMINAL, TaoMessage::PICKUP, transactionId, 0, //NULL (TaoObjHandle)pe, 2, 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::PICKUP);#endif mpEventMgr->release(pe); return PT_SUCCESS;}PtStatus PtTerminal::removeCallListener(PtCallListener& rCallListener){ if (!mpClient) { return PT_NOT_FOUND; } UtlString arg; UtlString local; char buff[MAXIMUM_INTEGER_STRING_LENGTH]; sprintf(buff, "%d", (int)&rCallListener); rCallListener.getLocation(&local); arg = local + TAOMESSAGE_DELIMITER + buff; mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_TERMINAL, TaoMessage::REMOVE_CALL_LISTENER, transactionId, 0, //NULL (TaoObjHandle)pe, 2, 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::REMOVE_CALL_LISTENER);#endif mpEventMgr->release(pe); return PT_SUCCESS;}PtStatus PtTerminal::removeTerminalListener(PtTerminalListener& rTerminalListener){ if (!mpClient) { return PT_NOT_FOUND; } TaoObjHandle handle = (TaoObjHandle) &rTerminalListener; char buff[128]; UtlString name; UtlString arg; if (PT_SUCCESS == rTerminalListener.getTerminalName(buff, 127)) // must have the terminal name { name.append(buff); sprintf(buff, "%d", handle); arg = name + TAOMESSAGE_DELIMITER + buff; } else return PT_INVALID_ARGUMENT; mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_TERMINAL, TaoMessage::REMOVE_TERM_LISTENER, transactionId, (TaoObjHandle)NULL, (TaoObjHandle)pe, 2, 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::REMOVE_TERM_LISTENER);#endif mpEventMgr->release(pe); mpClient->removeEventListener(rTerminalListener); return PT_SUCCESS;}PtStatus PtTerminal::setDoNotDisturb(PtBoolean flag){ if (!mpClient) { return PT_NOT_FOUND; } char buff[MAXIMUM_INTEGER_STRING_LENGTH]; sprintf(buff, "%d", flag); UtlString arg(buff); mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_TERMINAL, TaoMessage::SET_DONOT_DISTURB, 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::SET_DONOT_DISTURB);#endif mpEventMgr->release(pe); return PT_SUCCESS;}// Sets the codec CPU limit level for inbound calls.PtStatus PtTerminal::setCodecCPULimit(int limit){ if (!mpClient) { return PT_NOT_FOUND; } char buff[MAXIMUM_INTEGER_STRING_LENGTH]; sprintf(buff, "%d", limit); UtlString arg(buff); mpTransactionCnt->add(); unsigned int transactionId = mpTransactionCnt->getRef(); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_TERMINAL, TaoMessage::SET_INBOUND_CODEC_CPU_LIMIT, 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; }#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::SET_INBOUND_CODEC_CPU_LIMIT);#endif mpEventMgr->release(pe); return PT_SUCCESS;}/* ============================ ACCESSORS ================================= */// Return name associated with the terminal.PtStatus PtTerminal::getName(char* rpName, int maxLen){ if (rpName && maxLen > 0) { if (mTerminalName) { int bytes = strlen(mTerminalName); bytes = (bytes > maxLen) ? maxLen : bytes; memset(rpName, 0, maxLen); strncpy (rpName, mTerminalName, bytes); return PT_SUCCE
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?