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