static void mrcp_sofia_on_state_change( int status, mrcp_sofia_agent_t *sofia_agent, nua_handle_t *nh, mrcp_sofia_session_t *sofia_session, sip_t const *sip, tagi_t tags[]) { int ss_state = nua_callstate_init; tl_gets(tags, NUTAG_CALLSTATE_REF(ss_state), TAG_END()); if(!sofia_session || !sofia_session->session) { apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"SIP Call State [%s]", nua_callstate_name(ss_state)); return; } apt_obj_log(APT_LOG_MARK,APT_PRIO_NOTICE,sofia_session->session->log_obj,"SIP Call State %s [%s]", sofia_session->session->name, nua_callstate_name(ss_state)); switch(ss_state) { case nua_callstate_ready: mrcp_sofia_on_session_ready(status,sofia_agent,nh,sofia_session,sip,tags); break; case nua_callstate_terminated: mrcp_sofia_on_session_terminate(status,sofia_agent,nh,sofia_session,sip,tags); break; } }
static int luasofia_nua_callstate_name(lua_State *L) { enum nua_callstate call_state = lua_tointeger(L, -1); char const *name = nua_callstate_name(call_state); lua_pushstring(L, name); return 1; }
static void mrcp_sofia_on_state_change(mrcp_sofia_agent_t *sofia_agent, nua_handle_t *nh, mrcp_sofia_session_t *sofia_session, sip_t const *sip, tagi_t tags[]) { int ss_state = nua_callstate_init; tl_gets(tags, NUTAG_CALLSTATE_REF(ss_state), TAG_END()); apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"SIP Call State [%s]", nua_callstate_name(ss_state)); switch(ss_state) { case nua_callstate_received: mrcp_sofia_on_call_receive(sofia_agent,nh,sofia_session,sip,tags); break; case nua_callstate_terminated: mrcp_sofia_on_call_terminate(sofia_agent,nh,sofia_session,sip,tags); break; } }