Java Pjsip对Notify消息使用Sip特定的事件通知
我想在CsipSimple中实现Notify事件回调这里是我编写的C代码 我的C/C++文件 pjsip_event_notification.h文件Java Pjsip对Notify消息使用Sip特定的事件通知,java,c++,sip,pjsip,csip-simple,Java,C++,Sip,Pjsip,Csip Simple,我想在CsipSimple中实现Notify事件回调这里是我编写的C代码 我的C/C++文件 pjsip_event_notification.h文件 #include <pjsip-simple/evsub.h> class EventCallBack { public: virtual ~EventCallBack() {} virtual void on_evsub_state(pjsip_evsub *sub, pjsip_event *
#include <pjsip-simple/evsub.h>
class EventCallBack {
public:
virtual ~EventCallBack() {}
virtual void on_evsub_state(pjsip_evsub *sub, pjsip_event *event){}
virtual void on_tsx_state(pjsip_evsub *sub, pjsip_transaction *tsx,
pjsip_event *event){}
virtual void on_rx_refresh(pjsip_evsub *sub, pjsip_rx_data *rdata,
int p_st_code, pj_str_t **p_st_text, pjsip_hdr *res_hdr,
pjsip_msg_body **p_body){}
virtual void on_rx_notify(pjsip_evsub *sub, pjsip_rx_data *rdata, int *p_st_code,
pj_str_t **p_st_text, pjsip_hdr *res_hdr, pjsip_msg_body **p_body){}
virtual void on_client_refresh(pjsip_evsub *sub){}
virtual void on_server_timeout(pjsip_evsub *sub){}
};
extern "C" {
void setEventCallbackObject(EventCallBack* eventCallBack);
}
以及用于实现的Java文件
package com.csipsimple.events;
import org.pjsip.pjsua.EventCallBack;
import org.pjsip.pjsua.SWIGTYPE_p_int;
import org.pjsip.pjsua.SWIGTYPE_p_p_pj_str_t;
import org.pjsip.pjsua.SWIGTYPE_p_p_pjsip_msg_body;
import org.pjsip.pjsua.SWIGTYPE_p_pjsip_evsub;
import org.pjsip.pjsua.SWIGTYPE_p_pjsip_hdr;
import org.pjsip.pjsua.SWIGTYPE_p_pjsip_rx_data;
import org.pjsip.pjsua.SWIGTYPE_p_pjsip_transaction;
import org.pjsip.pjsua.pjsip_event;
public class EventNotify extends EventCallBack{
@Override
public void on_evsub_state(SWIGTYPE_p_pjsip_evsub sub, pjsip_event event) {
System.out.println("EventNotify on_evsub_state");
super.on_evsub_state(sub, event);
}
@Override
public void on_tsx_state(SWIGTYPE_p_pjsip_evsub sub,
SWIGTYPE_p_pjsip_transaction tsx, pjsip_event event) {
System.out.println("EventNotify on_tsx_state");
super.on_tsx_state(sub, tsx, event);
}
@Override
public void on_rx_refresh(SWIGTYPE_p_pjsip_evsub sub,
SWIGTYPE_p_pjsip_rx_data rdata, int p_st_code,
SWIGTYPE_p_p_pj_str_t p_st_text, SWIGTYPE_p_pjsip_hdr res_hdr,
SWIGTYPE_p_p_pjsip_msg_body p_body) {
System.out.println("EventNotify on_rx_refresh");
super.on_rx_refresh(sub, rdata, p_st_code, p_st_text, res_hdr, p_body);
}
@Override
public void on_rx_notify(SWIGTYPE_p_pjsip_evsub sub,
SWIGTYPE_p_pjsip_rx_data rdata, SWIGTYPE_p_int p_st_code,
SWIGTYPE_p_p_pj_str_t p_st_text, SWIGTYPE_p_pjsip_hdr res_hdr,
SWIGTYPE_p_p_pjsip_msg_body p_body) {
System.out.println("EventNotify on_rx_notify");
super.on_rx_notify(sub, rdata, p_st_code, p_st_text, res_hdr, p_body);
}
@Override
public void on_client_refresh(SWIGTYPE_p_pjsip_evsub sub) {
System.out.println("EventNotify on_client_refresh");
super.on_client_refresh(sub);
}
@Override
public void on_server_timeout(SWIGTYPE_p_pjsip_evsub sub) {
System.out.println("EventNotify on_server_timeout");
super.on_server_timeout(sub);
}
}
}
我想问的是,我怎样才能得到这些方法的回电
完整的Src可在以下位置克隆:
git克隆这可以使用 下面 pjsip_事件_通知.cpp
#include "pjsip_event_notification.h"
#include <pjsip.h>
#include <pjsip_ua.h>
#include <pjlib-util.h>
#include <pjlib.h>
#include <pjlib.h>
#include <pjsua.h>
#include <pjsua-lib/pjsua_internal.h>
static EventCallBack* registeredCallbackObject = NULL;
extern "C" {
pj_bool_t on_rx_response_wrapper(pjsip_rx_data *rdata){
registeredCallbackObject->on_rx_response(rdata);
return PJ_FALSE;
}
pj_bool_t on_rx_request_wrapper(pjsip_rx_data *rdata){
registeredCallbackObject->on_rx_request(rdata);
return PJ_FALSE;
}
/* The module instance. */
static pjsip_module mod_event_handler =
{
NULL, NULL, /* prev, next. */
{ (char*)"mod-reg-event", 12 }, /* Name. */
-1, /* Id */
PJSIP_MOD_PRIORITY_TSX_LAYER - 1, /* Priority */
NULL, /* load() */
NULL, /* start() */
NULL, /* stop() */
NULL, /* unload() */
&on_rx_response_wrapper, /* on_rx_request() */
&on_rx_response_wrapper, /* on_rx_response() */
NULL, /* on_tx_request. */
NULL, /* on_tx_response() */
NULL, /* on_tsx_state() */
};
PJ_DECL(pj_status_t) event_callback_init() {
return pjsip_endpt_register_module(pjsua_get_pjsip_endpt(),
&mod_event_handler);
}
void setEventCallbackObject(EventCallBack* eventCallBack){
registeredCallbackObject=eventCallBack;
}
}
#包括“pjsip事件通知.h”
#包括
#包括
#包括
#包括
#包括
#包括
#包括
静态事件回调*registeredCallbackObject=NULL;
外部“C”{
pj_bool_t on_rx_response_包装(pjsip_rx_data*rdata){
registeredCallbackObject->on_rx_响应(rdata);
返回PJ_FALSE;
}
pj_bool_t on_rx_request_wrapper(pjsip_rx_data*rdata){
registeredCallbackObject->on_rx_请求(rdata);
返回PJ_FALSE;
}
/*模块实例*/
静态pjsip_模块mod_事件_处理程序=
{
NULL,NULL,/*prev,next*/
{(char*)“mod reg事件”,12},/*名称*/
-1,/*Id*/
PJSIP_模块_优先级_TSX_层-1,/*优先级*/
NULL,/*load()*/
NULL,/*start()*/
NULL,/*stop()*/
NULL,/*unload()*/
&在接收响应包装器上,/*在接收请求()上*/
&在\u rx\u response\u包装器上,/*在\u rx\u response()上*/
NULL,/*应_-tx_请求*/
NULL,/*on_tx_response()*/
NULL,/*在\u tsx\u state()上*/
};
PJ_DECL(PJ_status_t)事件回调_init(){
返回pjsip_endpt_register_模块(pjsua_get_pjsip_endpt(),
&mod_事件处理程序);
}
void setEventCallbackObject(EventCallBack*EventCallBack){
registeredCallbackObject=eventCallBack;
}
}
相同的h文件
pjsip_事件_通知.h
#include <pj/config_site.h>
#include <pjsua-lib/pjsua.h>
class EventCallBack {
public:
virtual ~EventCallBack() {}
virtual void on_rx_response(pjsip_rx_data *rdata){
// Target Call Back for Notify message
}
virtual void on_rx_request(pjsip_rx_data *rdata){
}
};
extern "C" {
pj_status_t event_callback_init();
void setEventCallbackObject(EventCallBack* eventCallBack);
}
#包括
#包括
类事件回调{
公众:
虚拟~EventCallBack(){}
接收响应上的虚拟无效(pjsip接收数据*rdata){
//通知消息的目标回拨
}
接收请求时的虚拟无效(pjsip接收数据*rdata){
}
};
外部“C”{
pj_status_t event_callback_init();
void setEventCallbackObject(EventCallBack*EventCallBack);
}
#include <pj/config_site.h>
#include <pjsua-lib/pjsua.h>
class EventCallBack {
public:
virtual ~EventCallBack() {}
virtual void on_rx_response(pjsip_rx_data *rdata){
// Target Call Back for Notify message
}
virtual void on_rx_request(pjsip_rx_data *rdata){
}
};
extern "C" {
pj_status_t event_callback_init();
void setEventCallbackObject(EventCallBack* eventCallBack);
}