ptaddress.cpp

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

CPP
1,166
字号
        return PT_SUCCESS;}PtStatus PtAddress::removeAddressListener(PtAddressListener& rAddressListener){        TaoObjHandle listener = 0x00000008; //fake    char buff[MAXIMUM_INTEGER_STRING_LENGTH];    sprintf(buff, "%d", listener);        UtlString arg(buff);        mpTransactionCnt->add();        unsigned int transactionId = mpTransactionCnt->getRef();        OsProtectedEvent *pe = mpEventMgr->alloc();        TaoMessage      msg(TaoMessage::REQUEST_ADDRESS,                                                                        TaoMessage::REMOVE_ADDRESS_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_ADDRESS_LISTENER);#endif        mpEventMgr->release(pe);        return PT_SUCCESS;}PtStatus PtAddress::removeCallListener(PtCallListener& rCallListener){        TaoObjHandle listener = (TaoObjHandle)&rCallListener;    char buff[MAXIMUM_INTEGER_STRING_LENGTH];    sprintf(buff, "%d", listener);        UtlString arg(buff);        mpTransactionCnt->add();        unsigned int transactionId = mpTransactionCnt->getRef();        OsProtectedEvent *pe = mpEventMgr->alloc();        TaoMessage      msg(TaoMessage::REQUEST_ADDRESS,                                                                        TaoMessage::REMOVE_CALL_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_CALL_LISTENER);#endif        mpEventMgr->release(pe);        return PT_SUCCESS;}PtStatus PtAddress::setDoNotDisturb(PtBoolean flag){    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_ADDRESS,                                                                        TaoMessage::SET_DONOT_DISTURB,                                                                        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::SET_DONOT_DISTURB);#endif        mpEventMgr->release(pe);        mbDoNotDisturb = flag;        return PT_SUCCESS;}PtStatus PtAddress::setForwarding(PtAddressForwarding forwards[], int size){    char buff[MAXIMUM_INTEGER_STRING_LENGTH];    sprintf(buff, "%d", size);        UtlString arg(buff);        osPrintf("PtAddress::setForwarding(size=%d)\n", size) ;        int i;        for (i = 0; i < size; i++)        {                osPrintf("%02d: type=%d filter=%d, url=%s, caller=%s\n", i, forwards[i].mForwardingType, forwards[i].mFilterType, forwards[i].mDestinationUrl.data(), forwards[i].mCallerUrl.data()) ;                sprintf(buff, "%d", forwards[i].mForwardingType);                arg += TAOMESSAGE_DELIMITER + UtlString(buff);                sprintf(buff, "%d", forwards[i].mFilterType);                arg += TAOMESSAGE_DELIMITER + UtlString(buff);                arg += TAOMESSAGE_DELIMITER + forwards[i].mDestinationUrl                                + TAOMESSAGE_DELIMITER + forwards[i].mCallerUrl;                sprintf(buff, "%d", forwards[i].mNoAnswerTimeout);                arg += TAOMESSAGE_DELIMITER + UtlString(buff);        }        unsigned int transactionId = 0;        if (mpTransactionCnt)        {                mpTransactionCnt->add();                transactionId = mpTransactionCnt->getRef();        }        else {      // I HAVE NO IDEA WHAT THIS IS ABOUT, BUT THE FORMAT IS WRONG!!!      // And, we only got here because mpTransactionCnt is NULL.           osPrintf("\nPtAddress::setForwarding - mpTransactionCnt = %p\n", mpTransactionCnt);   }        OsProtectedEvent *pe = mpEventMgr->alloc();        TaoMessage      msg(TaoMessage::REQUEST_ADDRESS,TaoMessage::SET_FORWARDING,                                                                        transactionId,                                                                        0,                                                                        (TaoObjHandle)pe,                                                                        (5 * size + 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::SET_FORWARDING);#endif        mpEventMgr->release(pe);        mAddressForwardDbSem.acquire();        if (!mpAddressForwards && mAddressForwardCnt == 0)        {                if (size > 0) {                        mpAddressForwards = new PtAddressForwarding[size];                        mAddressForwardCnt = size;                        for (i = 0; i < size; i++)                                mpAddressForwards[i] = PtAddressForwarding(forwards[i]);                }        }        else        {                // Dump the old list                delete[] mpAddressForwards ;                mpAddressForwards = NULL ;                mAddressForwardCnt = 0 ;                // Create a new list                if (size > 0) {                        mpAddressForwards = new PtAddressForwarding[size];                        mAddressForwardCnt = size;                        for (int k = 0; k < size; k++)                                mpAddressForwards[k] = PtAddressForwarding(forwards[k]);                }        }        mAddressForwardDbSem.release();        return PT_SUCCESS;}PtStatus PtAddress::setMessageWaiting(PtBoolean flag){    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_ADDRESS,TaoMessage::SET_MESSAGE_WAITING,                                                                        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::SET_MESSAGE_WAITING);#endif        mpEventMgr->release(pe);        mbMessageWaiting = flag;        return PT_SUCCESS;}PtStatus PtAddress::setOfferedTimeout(int milliSecs){    char buff[MAXIMUM_INTEGER_STRING_LENGTH];    sprintf(buff, "%d", milliSecs);        UtlString arg(buff);        mpTransactionCnt->add();        unsigned int transactionId = mpTransactionCnt->getRef();        OsProtectedEvent *pe = mpEventMgr->alloc();        TaoMessage      msg(TaoMessage::REQUEST_ADDRESS,TaoMessage::SET_OFFERED_TIMEOUT,                                                                        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::SET_OFFERED_TIMEOUT);#endif        mpEventMgr->release(pe);        mOfferedTimeout = milliSecs;        return PT_SUCCESS;}/* ============================ ACCESSORS ================================= */// Get the name associated with the address.PtStatus PtAddress::getName(char* rpName, int len){        enum PtStatus returnCode = PT_RESOURCE_UNAVAILABLE;        if (rpName && len > 0)        {                if (!mAddress.isNull())                {                        int bytes = mAddress.length();                        bytes = (bytes > len) ? len : bytes;                        memset(rpName, 0, len);                        strncpy (rpName, mAddress.data(), bytes);                        returnCode = PT_SUCCESS;                }        }        return returnCode;}PtStatus PtAddress::getAddressListeners(PtAddressListener* addrListeners[],                                                                         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_ADDRESS_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_ADDRESS_LISTENERS);#endif        mpEventMgr->release(pe);        return PT_SUCCESS;}

⌨️ 快捷键说明

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