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