本文整理汇总了C++中run_top_route函数的典型用法代码示例。如果您正苦于以下问题:C++ run_top_route函数的具体用法?C++ run_top_route怎么用?C++ run_top_route使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了run_top_route函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: ht_expired_run_event_route
void ht_expired_run_event_route(int routeid)
{
int backup_rt;
sip_msg_t *fmsg;
if (routeid < 0 || event_rt.rlist[routeid] == NULL)
{
LM_DBG("route does not exist\n");
return;
}
if (faked_msg_init() < 0)
{
LM_ERR("faked_msg_init() failed\n");
return;
}
fmsg = faked_msg_next();
fmsg->parsed_orig_ruri_ok = 0;
backup_rt = get_route_type();
set_route_type(EVENT_ROUTE);
run_top_route(event_rt.rlist[routeid], fmsg, 0);
set_route_type(backup_rt);
}
开发者ID:4N7HR4X,项目名称:kamailio,代码行数:26,代码来源:ht_api.c
示例2: evapi_run_cfg_route
int evapi_run_cfg_route(evapi_env_t *evenv, int rt)
{
int backup_rt;
struct run_act_ctx ctx;
sip_msg_t *fmsg;
sip_msg_t tmsg;
if(evenv==0 || evenv->eset==0) {
LM_ERR("evapi env not set\n");
return -1;
}
if(rt<0)
return 0;
fmsg = faked_msg_next();
memcpy(&tmsg, fmsg, sizeof(sip_msg_t));
fmsg = &tmsg;
evapi_set_msg_env(fmsg, evenv);
backup_rt = get_route_type();
set_route_type(EVENT_ROUTE);
init_run_actions_ctx(&ctx);
run_top_route(event_rt.rlist[rt], fmsg, 0);
set_route_type(backup_rt);
evapi_set_msg_env(fmsg, NULL);
return 0;
}
开发者ID:AndreyRybkin,项目名称:kamailio,代码行数:27,代码来源:evapi_dispatch.c
示例3: tcpops_tcp_closed_run_route
static void tcpops_tcp_closed_run_route(struct tcp_connection *con)
{
int rt, backup_rt;
struct run_act_ctx ctx;
sip_msg_t *fmsg;
LM_DBG("tcp_closed_run_route event_route[tcp:closed]\n");
rt = route_get(&event_rt, "tcp:closed");
if (rt < 0 || event_rt.rlist[rt] == NULL)
{
LM_DBG("route does not exist");
return;
}
if (faked_msg_init() < 0)
{
LM_ERR("faked_msg_init() failed\n");
return;
}
fmsg = faked_msg_next();
fmsg->rcv = con->rcv;
backup_rt = get_route_type();
set_route_type(EVENT_ROUTE);
init_run_actions_ctx(&ctx);
run_top_route(event_rt.rlist[rt], fmsg, 0);
set_route_type(backup_rt);
}
开发者ID:DileepNunna,项目名称:kamailio,代码行数:28,代码来源:tcpops.c
示例4: nsq_consumer_fire_event
int nsq_consumer_fire_event(char *routename)
{
struct sip_msg *fmsg;
struct run_act_ctx ctx;
int rtb, rt;
LM_DBG("searching event_route[%s]\n", routename);
rt = route_get(&event_rt, routename);
if (rt < 0 || event_rt.rlist[rt] == NULL) {
LM_DBG("route %s does not exist\n", routename);
return -2;
}
LM_DBG("executing event_route[%s] (%d)\n", routename, rt);
if (faked_msg_init()<0) {
return -2;
}
fmsg = faked_msg_next();
rtb = get_route_type();
set_route_type(REQUEST_ROUTE);
init_run_actions_ctx(&ctx);
run_top_route(event_rt.rlist[rt], fmsg, 0);
set_route_type(rtb);
return 0;
}
开发者ID:GreenfieldTech,项目名称:kamailio,代码行数:25,代码来源:nsq_reader.c
示例5: run_resume_route
static inline void run_resume_route( int resume_route, struct sip_msg *msg)
{
/* run the resume route and if it ends the msg handling (no other aysnc
* started), run the post script callbacks. */
if ( (run_top_route(rlist[resume_route].a, msg) & ACT_FL_TBCONT) == 0 )
exec_post_req_cb(msg);
}
开发者ID:ionutrazvanionita,项目名称:opensips,代码行数:7,代码来源:async.c
示例6: uac_req_run_event_route
void uac_req_run_event_route(sip_msg_t *msg, uac_send_info_t *tp, int rcode)
{
char *evrtname = "uac:reply";
int rt, backup_rt;
struct run_act_ctx ctx;
sip_msg_t *fmsg;
rt = route_get(&event_rt, evrtname);
if (rt < 0 || event_rt.rlist[rt] == NULL)
{
LM_DBG("event_route[uac:reply] does not exist\n");
return;
}
uac_send_info_copy(tp, &_uac_req);
_uac_req.evcode = rcode;
if(msg==NULL)
{
_uac_req.evtype = 2;
fmsg = faked_msg_get_next();
} else {
_uac_req.evtype = 1;
fmsg = msg;
}
backup_rt = get_route_type();
set_route_type(REQUEST_ROUTE);
init_run_actions_ctx(&ctx);
run_top_route(event_rt.rlist[rt], fmsg, 0);
set_route_type(backup_rt);
}
开发者ID:AlessioCasco,项目名称:kamailio,代码行数:31,代码来源:uac_send.c
示例7: ht_expired_run_event_route
void ht_expired_run_event_route(char *route)
{
int rt, backup_rt;
sip_msg_t *fmsg;
if (route == NULL)
{
LM_ERR("bad route\n");
}
LM_DBG("ht_expired_run_event_route event_route[%s]\n", route);
rt = route_get(&event_rt, route);
if (rt < 0 || event_rt.rlist[rt] == NULL)
{
LM_DBG("route does not exist");
return;
}
if (faked_msg_init() < 0)
{
LM_ERR("faked_msg_init() failed\n");
return;
}
fmsg = faked_msg_next();
fmsg->parsed_orig_ruri_ok = 0;
backup_rt = get_route_type();
set_route_type(EVENT_ROUTE);
run_top_route(event_rt.rlist[rt], fmsg, 0);
set_route_type(backup_rt);
}
开发者ID:carlosp,项目名称:kamailio,代码行数:35,代码来源:ht_api.c
示例8: fire_init_event
static int fire_init_event(int rank)
{
struct sip_msg *fmsg;
struct run_act_ctx ctx;
int rtb, rt;
LM_DBG("rank is (%d)\n", rank);
if (rank!=PROC_INIT)
return 0;
rt = route_get(&event_rt, "kazoo:mod-init");
if(rt>=0 && event_rt.rlist[rt]!=NULL) {
LM_DBG("executing event_route[kazoo:mod-init] (%d)\n", rt);
if(faked_msg_init()<0)
return -1;
fmsg = faked_msg_next();
rtb = get_route_type();
set_route_type(REQUEST_ROUTE);
init_run_actions_ctx(&ctx);
run_top_route(event_rt.rlist[rt], fmsg, &ctx);
if(ctx.run_flags&DROP_R_F)
{
LM_ERR("exit due to 'drop' in event route\n");
return -1;
}
set_route_type(rtb);
}
return 0;
}
开发者ID:DileepNunna,项目名称:kamailio,代码行数:30,代码来源:kazoo.c
示例9: wsconn_run_route
static void wsconn_run_route(ws_connection_t *wsc)
{
int rt, backup_rt;
struct run_act_ctx ctx;
sip_msg_t *fmsg;
LM_DBG("wsconn_run_route event_route[websocket:closed]\n");
rt = route_get(&event_rt, "websocket:closed");
if (rt < 0 || event_rt.rlist[rt] == NULL)
{
LM_DBG("route does not exist");
return;
}
if (faked_msg_init() < 0)
{
LM_ERR("faked_msg_init() failed\n");
return;
}
fmsg = faked_msg_next();
wsc->rcv.proto_reserved1 = wsc->id;
fmsg->rcv = wsc->rcv;
backup_rt = get_route_type();
set_route_type(REQUEST_ROUTE);
init_run_actions_ctx(&ctx);
run_top_route(event_rt.rlist[rt], fmsg, 0);
set_route_type(backup_rt);
}
开发者ID:SipSeb,项目名称:kamailio,代码行数:31,代码来源:ws_conn.c
示例10: scriptroute_raise
static int scriptroute_raise(struct sip_msg *msg, str* ev_name,
evi_reply_sock *sock, evi_params_t *params)
{
evi_params_t * backup_params;
str * backup_name;
if (!sock || !(sock->flags & EVI_PARAMS)) {
LM_ERR("no socket found\n");
return -1;
}
/* check the socket type */
if (!(sock->flags & SCRIPTROUTE_FLAG)) {
LM_ERR("invalid socket type\n");
return -1;
}
/* save the previous parameters */
backup_params = parameters;
backup_name = event_name;
parameters = params;
event_name = ev_name;
run_top_route(event_rlist[SR_SOCK_ROUTE(sock)].a, msg);
/* restore previous parameters */
parameters = backup_params;
event_name = backup_name;
return 0;
}
开发者ID:xiaowei942,项目名称:opensips,代码行数:32,代码来源:event_route.c
示例11: route_timer_f
void route_timer_f(unsigned int ticks, void* param)
{
struct action* a = (struct action*)param;
static struct sip_msg* req= NULL;
if(req == NULL)
{
req = (struct sip_msg*)pkg_malloc(sizeof(struct sip_msg));
if(req == NULL)
{
LM_ERR("No more memory\n");
return;
}
memset(req, 0, sizeof(struct sip_msg));
req->first_line.type = SIP_REQUEST;
req->first_line.u.request.method.s= "DUMMY";
req->first_line.u.request.method.len= 5;
req->first_line.u.request.uri.s= "sip:[email protected]";
req->first_line.u.request.uri.len= 19;
}
if(a == NULL) {
LM_ERR("NULL action\n");
return;
}
run_top_route(a, req);
/* clean whatever extra structures were added by script functions */
free_sip_msg(req);
/* remove all added AVP - here we use all the time the default AVP list */
reset_avps( );
}
开发者ID:NormB,项目名称:opensips,代码行数:33,代码来源:timer.c
示例12: evrexec_process
void evrexec_process(evrexec_task_t *it, int idx)
{
sip_msg_t *fmsg;
sr_kemi_eng_t *keng = NULL;
str sidx = STR_NULL;
if(it!=NULL) {
fmsg = faked_msg_next();
set_route_type(LOCAL_ROUTE);
if(it->wait>0) sleep_us(it->wait);
keng = sr_kemi_eng_get();
if(keng==NULL) {
if(it->rtid>=0 && event_rt.rlist[it->rtid]!=NULL) {
run_top_route(event_rt.rlist[it->rtid], fmsg, 0);
} else {
LM_WARN("empty event route block [%.*s]\n",
it->ename.len, it->ename.s);
}
} else {
sidx.s = int2str(idx, &sidx.len);
if(sr_kemi_route(keng, fmsg, EVENT_ROUTE,
&it->ename, &sidx)<0) {
LM_ERR("error running event route kemi callback\n");
}
}
}
/* avoid exiting the process */
while(1) { sleep(3600); }
}
开发者ID:adubovikov,项目名称:kamailio,代码行数:29,代码来源:evrexec_mod.c
示例13: rpc_evr_run
void rpc_evr_run(rpc_t *rpc, void *c)
{
str evr_name = STR_NULL;
str evr_data = STR_NULL;
int ret = 0;
int evr_id = -1;
sr_kemi_eng_t *keng = NULL;
sip_msg_t *fmsg = NULL;
int rtbk = 0;
char evr_buf[2];
ret = rpc->scan(c, "s*s", &evr_name.s, &evr_data.s);
if(ret<1) {
LM_ERR("failed getting the parameters");
rpc->fault(c, 500, "Invalid parameters");
return;
}
evr_name.len = strlen(evr_name.s);
if(ret<2) {
evr_buf[0] = '\0';
evr_data.s = evr_buf;
evr_data.len = 0;
} else {
evr_data.len = strlen(evr_data.s);
}
pv_evr_data = &evr_data;
keng = sr_kemi_eng_get();
if(keng==NULL) {
evr_id = route_lookup(&event_rt, evr_name.s);
if(evr_id == -1) {
pv_evr_data = NULL;
LM_ERR("event route not found: %.*s\n", evr_name.len, evr_name.s);
rpc->fault(c, 500, "Event route not found");
return;
}
} else {
evr_id = -1;
}
fmsg = faked_msg_next();
rtbk = get_route_type();
set_route_type(LOCAL_ROUTE);
if(evr_id>=0) {
if(event_rt.rlist[evr_id]!=NULL) {
run_top_route(event_rt.rlist[evr_id], fmsg, 0);
} else {
LM_WARN("empty event route block [%.*s]\n",
evr_name.len, evr_name.s);
}
} else {
if(sr_kemi_route(keng, fmsg, EVENT_ROUTE, &evr_name, &evr_data)<0) {
LM_ERR("error running event route kemi callback\n");
}
}
set_route_type(rtbk);
pv_evr_data = NULL;
}
开发者ID:lazedo,项目名称:kamailio,代码行数:59,代码来源:evrexec_mod.c
示例14: run_failure_handlers
/* return 1 if a failure_route processes */
static inline int run_failure_handlers(struct cell *t)
{
static struct sip_msg faked_req;
struct sip_msg *shmem_msg;
struct ua_client *uac;
int on_failure;
shmem_msg = t->uas.request;
uac = &t->uac[picked_branch];
/* failure_route for a local UAC? */
if (!shmem_msg || REQ_LINE(shmem_msg).method_value==METHOD_CANCEL ) {
LM_WARN("no UAC or CANCEL support (%d, %d) \n",
t->on_negative, t->tmcb_hl.reg_types);
return 0;
}
/* don't start faking anything if we don't have to */
if ( !has_tran_tmcbs( t, TMCB_ON_FAILURE) && !t->on_negative ) {
LM_WARN("no negative handler (%d, %d)\n",t->on_negative,
t->tmcb_hl.reg_types);
return 1;
}
if (!fake_req(&faked_req, shmem_msg, &t->uas, uac)) {
LM_ERR("fake_req failed\n");
return 0;
}
/* fake also the env. conforming to the fake msg */
faked_env( t, &faked_req);
/* DONE with faking ;-) -> run the failure handlers */
if ( has_tran_tmcbs( t, TMCB_ON_FAILURE) ) {
run_trans_callbacks( TMCB_ON_FAILURE, t, &faked_req,
uac->reply, uac->last_received);
}
if (t->on_negative) {
/* update flags in transaction if changed by callbacks */
shmem_msg->flags = faked_req.flags;
/* avoid recursion -- if failure_route forwards, and does not
* set next failure route, failure_route will not be reentered
* on failure */
on_failure = t->on_negative;
t->on_negative=0;
/* run a reply_route action if some was marked */
run_top_route(failure_rlist[on_failure].a, &faked_req);
}
/* restore original environment and free the fake msg */
faked_env( t, 0);
free_faked_req(&faked_req,t);
/* if failure handler changed flag, update transaction context */
shmem_msg->flags = faked_req.flags;
/* branch flags do not need to be updated as this branch will be never
* used again */
return 1;
}
开发者ID:iamroger,项目名称:voip,代码行数:59,代码来源:t_reply.c
示例15: run_pike_route
int run_pike_route( struct sip_msg *msg, void *rt ) {
/* the check was dropped */
if ( run_top_route( rlist[(int)(long)rt].a, msg)&ACT_FL_DROP)
return SCB_RUN_ALL;
/* run the check */
if (pike_check_req(msg)<0)
return SCB_DROP_MSG;
return SCB_RUN_ALL;
}
开发者ID:GeorgeShaw,项目名称:opensips,代码行数:11,代码来源:pike_funcs.c
示例16: ht_handle_expired_record
void ht_handle_expired_record(ht_t *ht, ht_cell_t *cell)
{
int backup_rt;
sip_msg_t *fmsg;
sr_kemi_eng_t *keng = NULL;
if(ht_event_callback.s==NULL || ht_event_callback.len<=0) {
if (ht->evex_index < 0 || event_rt.rlist[ht->evex_index] == NULL) {
LM_DBG("route does not exist\n");
return;
}
} else {
keng = sr_kemi_eng_get();
if(keng==NULL) {
LM_DBG("event callback (%s) set, but no cfg engine\n",
ht_event_callback.s);
return;
}
}
LM_DBG("running event_route[htable:expired:%.*s]\n",
ht->name.len, ht->name.s);
if (faked_msg_init() < 0) {
LM_ERR("faked_msg_init() failed\n");
return;
}
ht_expired_cell = cell;
fmsg = faked_msg_next();
fmsg->parsed_orig_ruri_ok = 0;
backup_rt = get_route_type();
set_route_type(EVENT_ROUTE);
if(ht->evex_index >= 0) {
run_top_route(event_rt.rlist[ht->evex_index], fmsg, 0);
} else {
if(keng!=NULL) {
if(keng->froute(fmsg, EVENT_ROUTE,
&ht_event_callback, &ht->evex_name)<0) {
LM_ERR("error running event route kemi callback\n");
}
}
}
set_route_type(backup_rt);
ht_expired_cell = NULL;
}
开发者ID:btriller,项目名称:kamailio,代码行数:51,代码来源:ht_api.c
示例17: wsconn_run_route
static void wsconn_run_route(ws_connection_t *wsc)
{
int rt, backup_rt;
struct run_act_ctx ctx;
sip_msg_t *fmsg;
sr_kemi_eng_t *keng = NULL;
str evrtname = str_init("websocket:closed");
LM_DBG("wsconn_run_route event_route[websocket:closed]\n");
rt = route_lookup(&event_rt, evrtname.s);
if (rt < 0 || event_rt.rlist[rt] == NULL)
{
if(ws_event_callback.len<=0 || ws_event_callback.s==NULL) {
LM_DBG("event route does not exist");
return;
}
keng = sr_kemi_eng_get();
if(keng==NULL) {
LM_DBG("event route callback engine does not exist");
return;
} else {
rt = -1;
}
}
if (faked_msg_init() < 0)
{
LM_ERR("faked_msg_init() failed\n");
return;
}
fmsg = faked_msg_next();
wsc->rcv.proto_reserved1 = wsc->id;
fmsg->rcv = wsc->rcv;
backup_rt = get_route_type();
set_route_type(EVENT_ROUTE);
init_run_actions_ctx(&ctx);
if(rt<0) {
/* kemi script event route callback */
if(keng && keng->froute(fmsg, EVENT_ROUTE,
&ws_event_callback, &evrtname)<0) {
LM_ERR("error running event route kemi callback\n");
}
} else {
/* native cfg event route */
run_top_route(event_rt.rlist[rt], fmsg, 0);
}
set_route_type(backup_rt);
}
开发者ID:GreenfieldTech,项目名称:kamailio,代码行数:51,代码来源:ws_conn.c
示例18: msrp_frame_received
static int msrp_frame_received(void *data)
{
tcp_event_info_t *tev;
static msrp_frame_t mf;
sip_msg_t *fmsg;
struct run_act_ctx ctx;
int rtb, rt;
tev = (tcp_event_info_t*)data;
if(tev==NULL || tev->buf==NULL || tev->len<=0)
{
LM_DBG("invalid parameters\n");
return -1;
}
memset(&mf, 0, sizeof(msrp_frame_t));
mf.buf.s = tev->buf;
mf.buf.len = tev->len;
mf.tcpinfo = tev;
if(msrp_parse_frame(&mf)<0)
{
LM_ERR("error parsing msrp frame\n");
return -1;
}
msrp_reset_env();
msrp_set_current_frame(&mf);
rt = route_get(&event_rt, "msrp:frame-in");
if(rt>=0 && event_rt.rlist[rt]!=NULL) {
LM_DBG("executing event_route[msrp:frame-in] (%d)\n", rt);
fmsg = msrp_fake_sipmsg(&mf);
if(fmsg!=NULL)
fmsg->rcv = *tev->rcv;
rtb = get_route_type();
set_route_type(REQUEST_ROUTE);
init_run_actions_ctx(&ctx);
run_top_route(event_rt.rlist[rt], fmsg, &ctx);
if(ctx.run_flags&DROP_R_F)
{
LM_DBG("exit due to 'drop' in event route\n");
}
set_route_type(rtb);
if(fmsg!=NULL)
free_sip_msg(fmsg);
}
msrp_reset_env();
msrp_destroy_frame(&mf);
return 0;
}
开发者ID:halan,项目名称:kamailio,代码行数:50,代码来源:msrp_mod.c
示例19: w_route_exists
/*! Run a request route block if it exists
*/
static int w_route_exists(struct sip_msg *msg, char *route)
{
struct run_act_ctx ctx;
int newroute, backup_rt, ret;
newroute = route_lookup(&main_rt, route);
if (newroute<0) {
return -1;
}
backup_rt = get_route_type();
set_route_type(REQUEST_ROUTE);
init_run_actions_ctx(&ctx);
ret = run_top_route(main_rt.rlist[newroute], msg, &ctx);
set_route_type(backup_rt);
return ret;
}
开发者ID:4N7HR4X,项目名称:kamailio,代码行数:18,代码来源:cfgutils.c
示例20: dlg_ontimeout
/*!
* \brief Timer function that removes expired dialogs, run timeout route
* \param tl dialog timer list
*/
void dlg_ontimeout(struct dlg_tl *tl) {
struct dlg_cell *dlg;
int new_state, old_state, unref;
struct sip_msg *fmsg;
/* get the dialog tl payload */
dlg = ((struct dlg_cell*) ((char *) (tl) -
(unsigned long) (&((struct dlg_cell*) 0)->tl)));
if (dlg->toroute > 0 && dlg->toroute < main_rt.entries
&& main_rt.rlist[dlg->toroute] != NULL) {
fmsg = faked_msg_next();
if (exec_pre_script_cb(fmsg, REQUEST_CB_TYPE) > 0) {
dlg_set_ctx_dialog(dlg);
LM_DBG("executing route %d on timeout\n", dlg->toroute);
set_route_type(REQUEST_ROUTE);
run_top_route(main_rt.rlist[dlg->toroute], fmsg, 0);
dlg_set_ctx_dialog(0);
exec_post_script_cb(fmsg, REQUEST_CB_TYPE);
}
}
if ((dlg->dflags & DLG_FLAG_TOBYE)
&& (dlg->state == DLG_STATE_CONFIRMED)) {
//TODO: dlg_bye_all(dlg, NULL);
unref_dlg(dlg, 1);
return;
}
next_state_dlg(dlg, DLG_EVENT_REQBYE, &old_state, &new_state, &unref, 0);
if (new_state == DLG_STATE_DELETED && old_state != DLG_STATE_DELETED) {
LM_WARN("timeout for dlg with CallID '%.*s' and tags '%.*s'\n",
dlg->callid.len, dlg->callid.s,
dlg->from_tag.len, dlg->from_tag.s);
/* dialog timeout */
run_dlg_callbacks(DLGCB_EXPIRED, dlg, NULL, NULL, DLG_DIR_NONE, 0);
unref_dlg(dlg, unref + 1);
} else {
unref_dlg(dlg, 1);
}
return;
}
开发者ID:Jared-Prime,项目名称:kamailio,代码行数:51,代码来源:dlg_handlers.c
注:本文中的run_top_route函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论