📄 callbacks.cpp
字号:
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 + -