⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 callbacks.cpp

📁 基于sipfoundy 公司开发的sipx协议API
💻 CPP
📖 第 1 页 / 共 2 页
字号:
            case CALLSTATE_DISCONNECTED:                {                    SIPX_CALL hDestroy = g_hAutoRedirectCallbackCall ;                    sipxCallDestroy(hDestroy) ;                }                break ;            default:                break ;        }    }             return true;}bool basicCall_CallBack_Place(SIPX_EVENT_CATEGORY category,                              void* pInfo,                              void* pUserData){    if (category == EVENT_CATEGORY_CALLSTATE)    {        SIPX_CALLSTATE_INFO* pCallInfo = (SIPX_CALLSTATE_INFO*)pInfo;        g_recorder.addEvent(pCallInfo->hLine, pCallInfo->event, pCallInfo->cause) ;    }    return true;}bool basicCall_CallBack_Receive(SIPX_EVENT_CATEGORY category,                                          void* pInfo,                                          void* pUserData){         if (category == EVENT_CATEGORY_CALLSTATE)    {        SIPX_CALLSTATE_INFO* pCallInfo = (SIPX_CALLSTATE_INFO*)pInfo;        SIPX_LINE hLine = pCallInfo->hLine;        SIPX_CALL hCall = pCallInfo->hCall;                g_recorder2.addEvent(hLine, pCallInfo->event, pCallInfo->cause) ;        // If we have user data verify the line url against it        if (pUserData)        {            char szBuffer[500] ;             size_t nBuffer ;            if (strlen((const char*) pUserData))            {                if (hLine)  // hLine can be 0, and therefore, sipxLineGetURI should fail)                {                    CPPUNIT_ASSERT_EQUAL(sipxLineGetURI(hLine, szBuffer, sizeof(szBuffer), nBuffer), SIPX_RESULT_SUCCESS) ;                    // an event can come in with what appears to be the "wrong" user data.                    // for instance, if a listener is removed and a new listener is added immediately with new user data.                    // printf("comparing %s to %s\n", pUserData, szBuffer) ;                    //CPPUNIT_ASSERT(strcmp((char*) pUserData, szBuffer) == 0) ;                }            }            //else            //{                //CPPUNIT_ASSERT_EQUAL(sipxLineGetURI(hLine, szBuffer, sizeof(szBuffer), nBuffer), SIPX_RESULT_FAILURE) ;            //}        }        switch(pCallInfo->event)        {            case CALLSTATE_OFFERING:                sipxCallAccept(hCall) ;                break ;            case CALLSTATE_ALERTING:                sipxCallAnswer(hCall) ;                break ;            case CALLSTATE_DISCONNECTED:                sipxCallDestroy(hCall) ;                 break ;            default:                break ;        }    }             return true;}bool basicCall_CallBack_Receive3(SIPX_EVENT_CATEGORY category,                              void* pInfo,                              void* pUserData){     if (category == EVENT_CATEGORY_CALLSTATE)    {        SIPX_CALLSTATE_INFO* pCallInfo = (SIPX_CALLSTATE_INFO*) pInfo;        SIPX_LINE hLine = pCallInfo->hLine;        SIPX_CALL hCall = pCallInfo->hCall;        g_recorder3.addEvent(hLine, pCallInfo->event, pCallInfo->cause) ;        // If we have user data verify the line url against it        if (pUserData)        {            char szBuffer[500] ;             size_t nBuffer ;            if (strlen((const char*) pUserData))            {                CPPUNIT_ASSERT_EQUAL(sipxLineGetURI(hLine, szBuffer, sizeof(szBuffer), nBuffer), SIPX_RESULT_SUCCESS) ;                // printf("comparing %s to %s\n", pUserData, szBuffer) ;                CPPUNIT_ASSERT(strcmp((char*) pUserData, szBuffer) == 0) ;            }            else            {                CPPUNIT_ASSERT_EQUAL(sipxLineGetURI(hLine, szBuffer, sizeof(szBuffer), nBuffer), SIPX_RESULT_FAILURE) ;            }        }        switch(pCallInfo->event)        {            case CALLSTATE_OFFERING:                sipxCallAccept(hCall) ;                break ;            case CALLSTATE_ALERTING:                sipxCallAnswer(hCall) ;                break ;            case CALLSTATE_DISCONNECTED:                sipxCallDestroy(hCall) ;                 break ;            default:                break ;        }    }    return true;}bool basicCall_CallBack_Receive3_hangup(SIPX_EVENT_CATEGORY category,                              void* pInfo,                              void* pUserData){     if (category == EVENT_CATEGORY_CALLSTATE)    {        SIPX_CALLSTATE_INFO* pCallInfo = (SIPX_CALLSTATE_INFO*) pInfo;        SIPX_LINE hLine = pCallInfo->hLine;        SIPX_CALL hCall = pCallInfo->hCall;        g_recorder3.addEvent(hLine, pCallInfo->event, pCallInfo->cause) ;        // If we have user data verify the line url against it        if (pUserData)        {            char szBuffer[500] ;             size_t nBuffer ;            if (strlen((const char*) pUserData))            {                CPPUNIT_ASSERT_EQUAL(sipxLineGetURI(hLine, szBuffer, sizeof(szBuffer), nBuffer), SIPX_RESULT_SUCCESS) ;                // printf("comparing %s to %s\n", pUserData, szBuffer) ;                CPPUNIT_ASSERT(strcmp((char*) pUserData, szBuffer) == 0) ;            }            else            {                CPPUNIT_ASSERT_EQUAL(sipxLineGetURI(hLine, szBuffer, sizeof(szBuffer), nBuffer), SIPX_RESULT_FAILURE) ;            }        }        switch(pCallInfo->event)        {            case CALLSTATE_OFFERING:                sipxCallAccept(hCall) ;                break ;            case CALLSTATE_ALERTING:                sipxCallAnswer(hCall) ;                break ;            case CALLSTATE_CONNECTED:                ghCallHangup = hCall;                break ;            case CALLSTATE_DISCONNECTED:                            break ;            default:                break ;        }    }    return true;}bool basicCall_CallBack_Receive3_busy(SIPX_EVENT_CATEGORY category,                              void* pInfo,                              void* pUserData){     if (category == EVENT_CATEGORY_CALLSTATE)    {        SIPX_CALLSTATE_INFO* pCallInfo = (SIPX_CALLSTATE_INFO*) pInfo;        SIPX_LINE hLine = pCallInfo->hLine;        SIPX_CALL hCall = pCallInfo->hCall;        g_recorder3.addEvent(hLine, pCallInfo->event, pCallInfo->cause) ;        // If we have user data verify the line url against it        if (pUserData)        {            char szBuffer[500] ;             size_t nBuffer ;            if (strlen((const char*) pUserData))            {                CPPUNIT_ASSERT_EQUAL(sipxLineGetURI(hLine, szBuffer, sizeof(szBuffer), nBuffer), SIPX_RESULT_SUCCESS) ;                // printf("comparing %s to %s\n", pUserData, szBuffer) ;                CPPUNIT_ASSERT(strcmp((char*) pUserData, szBuffer) == 0) ;            }            else            {                CPPUNIT_ASSERT_EQUAL(sipxLineGetURI(hLine, szBuffer, sizeof(szBuffer), nBuffer), SIPX_RESULT_FAILURE) ;            }        }        switch(pCallInfo->event)        {            case CALLSTATE_OFFERING:                sipxCallReject(hCall) ;                sipxCallDestroy(hCall) ;                break ;            default:                break ;        }    }    return true;}bool basicCall_CallBack_Receive_Hangup(SIPX_EVENT_CATEGORY category,                              void* pInfo,                              void* pUserData){     if (category == EVENT_CATEGORY_CALLSTATE)    {        SIPX_CALLSTATE_INFO* pCallInfo = (SIPX_CALLSTATE_INFO*) pInfo;        SIPX_LINE hLine = pCallInfo->hLine;        SIPX_CALL hCall = pCallInfo->hCall;        g_recorder2.addEvent(hLine, pCallInfo->event, pCallInfo->cause) ;                switch(pCallInfo->event)        {            case CALLSTATE_OFFERING:                sipxCallAccept(hCall) ;                break ;            case CALLSTATE_ALERTING:                sipxCallAnswer(hCall) ;                OsTask::delay(CALL_DELAY);                sipxCallDestroy(hCall) ;                break ;            case CALLSTATE_DISCONNECTED:                break ;            default:                break ;        }    }    return true;}bool basicCall_CallBack_Receive_Reject(SIPX_EVENT_CATEGORY category,                              void* pInfo,                              void* pUserData){     if (category == EVENT_CATEGORY_CALLSTATE)    {        SIPX_CALLSTATE_INFO* pCallInfo = (SIPX_CALLSTATE_INFO*) pInfo;        SIPX_LINE hLine = pCallInfo->hLine;        SIPX_CALL hCall = pCallInfo->hCall;        g_recorder2.addEvent(hLine, pCallInfo->event, pCallInfo->cause) ;                switch(pCallInfo->event)        {            case CALLSTATE_OFFERING:                sipxCallReject(hCall) ;                sipxCallDestroy(hCall) ;                break ;            case CALLSTATE_ALERTING:                break ;            case CALLSTATE_DISCONNECTED:                            break ;            default:                break ;        }    }    return true;}bool basicCall_CallBack_Redirect(SIPX_EVENT_CATEGORY category,                              void* pInfo,                              void* pUserData){     if (category == EVENT_CATEGORY_CALLSTATE)    {        SIPX_CALLSTATE_INFO* pCallInfo = (SIPX_CALLSTATE_INFO*) pInfo;        SIPX_CALL hCall = pCallInfo->hCall;        switch(pCallInfo->event)        {            case CALLSTATE_OFFERING:                sipxCallRedirect(hCall, "sip:foo@127.0.0.1:10000");				sipxCallDestroy(hCall);                break ;            case CALLSTATE_ALERTING:                break ;            case CALLSTATE_DISCONNECTED:                            break ;            default:                break ;        }    }    return true;}

⌨️ 快捷键说明

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