本文整理汇总了C++中sl_api_t::register_cb方法的典型用法代码示例。如果您正苦于以下问题:C++ sl_api_t::register_cb方法的具体用法?C++ sl_api_t::register_cb怎么用?C++ sl_api_t::register_cb使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sl_api_t
的用法示例。
在下文中一共展示了sl_api_t::register_cb方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: mod_init
//.........这里部分代码省略.........
if(trace_on_flag==NULL) {
LM_ERR("no more shm memory left\n");
return -1;
}
*trace_on_flag = trace_on;
xheaders_write_flag = (int*)shm_malloc(sizeof(int));
xheaders_read_flag = (int*)shm_malloc(sizeof(int));
if (!(xheaders_write_flag && xheaders_read_flag)) {
LM_ERR("no more shm memory left\n");
return -1;
}
*xheaders_write_flag = xheaders_write;
*xheaders_read_flag = xheaders_read;
/* register callbacks to TM */
if (load_tm_api(&tmb)!=0) {
LM_WARN("can't load tm api. Will not install tm callbacks.\n");
} else if(tmb.register_tmcb( 0, 0, TMCB_REQUEST_IN, trace_onreq_in, 0, 0) <=0) {
LM_ERR("can't register trace_onreq_in\n");
return -1;
}
/* bind the SL API */
if (sl_load_api(&slb)!=0) {
LM_WARN("cannot bind to SL API. Will not install sl callbacks.\n");
} else {
/* register sl callbacks */
memset(&slcb, 0, sizeof(sl_cbelem_t));
slcb.type = SLCB_REPLY_READY;
slcb.cbf = trace_sl_onreply_out;
if (slb.register_cb(&slcb) != 0) {
LM_ERR("can't register for SLCB_REPLY_READY\n");
return -1;
}
if(trace_sl_acks)
{
slcb.type = SLCB_ACK_FILTERED;
slcb.cbf = trace_sl_ack_in;
if (slb.register_cb(&slcb) != 0) {
LM_ERR("can't register for SLCB_ACK_FILTERED\n");
return -1;
}
}
}
if(dup_uri_str.s!=0)
{
dup_uri = (struct sip_uri *)pkg_malloc(sizeof(struct sip_uri));
if(dup_uri==0)
{
LM_ERR("no more pkg memory left\n");
return -1;
}
memset(dup_uri, 0, sizeof(struct sip_uri));
if(parse_uri(dup_uri_str.s, dup_uri_str.len, dup_uri)<0)
{
LM_ERR("bad dup uri\n");
return -1;
}
}
if(force_send_sock_str.s!=0)