ptaddress.cpp

来自「基于sipfoundy 公司开发的sipx协议API」· C++ 代码 · 共 1,166 行 · 第 1/3 页

CPP
1,166
字号
PtStatus PtAddress::getCallListeners(PtCallListener* callListeners[],                                                                  int size,                                                                  int& nItems){    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_ADDRESS,                                                                        TaoMessage::GET_CALL_LISTENERS,                                                                        transactionId,                                                                        0,                                                                        (TaoObjHandle)pe,                                                                        1,                                                                        arg);        mpClient->sendRequest(msg);        int items;        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 &)items);        pe->getStringData((UtlString &)arg);#ifdef PTAPI_TEST        int cmd;        pe->getIntData2(cmd);        assert(cmd == TaoMessage::GET_CALL_LISTENERS);#endif        mpEventMgr->release(pe);        return PT_SUCCESS;}PtStatus PtAddress::getConnections(PtConnection connections[],                                                                int size,                                                                int& nItems){    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_ADDRESS,                                                                        TaoMessage::GET_CONNECTIONS,                                                                        transactionId,                                                                        0,                                                                        (TaoObjHandle)pe,                                                                        1,                                                                        arg);        mpClient->sendRequest(msg);        int items;        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 &)items);        pe->getStringData((UtlString &)arg);#ifdef PTAPI_TEST        int cmd;        pe->getIntData2(cmd);        assert(cmd == TaoMessage::GET_CONNECTIONS);#endif        mpEventMgr->release(pe);        return PT_SUCCESS;}PtStatus PtAddress::getDoNotDisturb(PtBoolean& rFlag){        rFlag = mbDoNotDisturb;        return PT_SUCCESS;}PtStatus PtAddress::getForwarding(PtAddressForwarding forwards[],                                                           int size,                                                           int& nItems){        PtStatus ret = PT_SUCCESS;        nItems = mAddressForwardCnt;        mAddressForwardDbSem.acquire();        if (mAddressForwardCnt && mpAddressForwards)        {                if (size < nItems)                        nItems = size;                for (int i = 0; i < nItems; i++)                {                        forwards[i] = PtAddressForwarding(mpAddressForwards[i]);                }        }        else if (nItems > 0)                ret = PT_INVALID_STATE;        mAddressForwardDbSem.release();        return ret;}PtStatus PtAddress::getMessageWaiting(PtBoolean& rFlag){        rFlag = mbMessageWaiting;        return PT_SUCCESS;}PtStatus PtAddress::getOfferedTimeout(int& rMilliSecs){        rMilliSecs = mOfferedTimeout;        return PT_SUCCESS;}PtStatus PtAddress::getTerminals(PtTerminal terms[], int size, int& nItems){    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_ADDRESS,                                                                        TaoMessage::GET_TERMINALS,                                                                        transactionId,                                                                        0,                                                                        (TaoObjHandle)pe,                                                                        1,                                                                        arg);        mpClient->sendRequest(msg);        int items;        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 &)items);        pe->getStringData((UtlString &)arg);#ifdef PTAPI_TEST        int cmd;        pe->getIntData2(cmd);        assert(cmd == TaoMessage::GET_TERMINALS);#endif        mpEventMgr->release(pe);        return PT_SUCCESS;}PtStatus PtAddress::getProvider(PtProvider& rProvider){        mpTransactionCnt->add();        unsigned int transactionId = mpTransactionCnt->getRef();        // formulate the message to be sent to the server, the format of the msg over        // the wire is following:        // TaoMessageType$D$TransactionID$D$ArgCnt$D$Arg1$D$Arg2........        //              UtlString       argList = (UtlString)m_strServer + (UtlString)TAOMESSAGE_DELIMITER + (UtlString)m_strPort;        UtlString       argList = "";        OsProtectedEvent *pe = mpEventMgr->alloc();        TaoMessage      msg(TaoMessage::REQUEST_ADDRESS,                                                                TaoMessage::GET_PROVIDER,                                                                        transactionId,                                                                        0, //NULL                                                                        (TaoObjHandle)pe,                                                                        2,                                                                        argList);        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::GET_PROVIDER);#endif        mpEventMgr->release(pe);        return PT_SUCCESS;}PtStatus PtAddress::numAddressListeners(int& count){        mpTransactionCnt->add();        unsigned int transactionId = mpTransactionCnt->getRef();        OsProtectedEvent *pe = mpEventMgr->alloc();        TaoMessage      msg(TaoMessage::REQUEST_ADDRESS,                                                                        TaoMessage::NUM_ADDRESS_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((int &)count);#ifdef PTAPI_TEST        int cmd;        pe->getIntData2(cmd);        assert(cmd == TaoMessage::NUM_ADDRESS_LISTENERS);#endif        mpEventMgr->release(pe);        return PT_SUCCESS;}PtStatus PtAddress::numCallListeners(int& count){        mpTransactionCnt->add();        unsigned int transactionId = mpTransactionCnt->getRef();        OsProtectedEvent *pe = mpEventMgr->alloc();        TaoMessage      msg(TaoMessage::REQUEST_ADDRESS,                                                                        TaoMessage::NUM_CALL_LISTENERS,                                                                        transactionId,                                                                        0,                                                                        (TaoObjHandle)pe,                                                                        0,                                                                        "");        mpClient->sendRequest(msg);        return PT_SUCCESS;        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 &)count);#ifdef PTAPI_TEST        int cmd;        pe->getIntData2(cmd);        assert(cmd == TaoMessage::NUM_CALL_LISTENERS);#endif        mpEventMgr->release(pe);        return PT_SUCCESS;}PtStatus PtAddress::numConnections(int& count){        mpTransactionCnt->add();        unsigned int transactionId = mpTransactionCnt->getRef();        OsProtectedEvent *pe = mpEventMgr->alloc();        TaoMessage      msg(TaoMessage::REQUEST_ADDRESS,                                                                        TaoMessage::NUM_CONNECTIONS,                                                                        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((int &)count);#ifdef PTAPI_TEST        int cmd;        pe->getIntData2(cmd);        assert(cmd == TaoMessage::NUM_CONNECTIONS);#endif        mpEventMgr->release(pe);        return PT_SUCCESS;}PtStatus PtAddress::numForwards(int& count){        count = mAddressForwardCnt;        return PT_SUCCESS;}PtStatus PtAddress::numTerminals(int& count){        mpTransactionCnt->add();        unsigned int transactionId = mpTransactionCnt->getRef();        OsProtectedEvent *pe = mpEventMgr->alloc();        TaoMessage      msg(TaoMessage::REQUEST_ADDRESS,                                                                        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((int &)count);#ifdef PTAPI_TEST        int cmd;        pe->getIntData2(cmd);        assert(cmd == TaoMessage::NUM_TERMINALS);#endif        mpEventMgr->release(pe);        return PT_SUCCESS;}/* ============================ INQUIRY =================================== *//* //////////////////////////// PROTECTED ///////////////////////////////// */// Protected constructor./* //////////////////////////// PRIVATE /////////////////////////////////// *//* ============================ FUNCTIONS ================================= */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?