在mrcp_sofia_task_initialize中调用nua_create一个UA(User agent)这个跟freeswitch SIP信令的接收,是一样的。在nua_create的时候会设置回调函数:mrcp_sofia_event_callback()。接下来的处理都是一样的,只是有事件的时候的回调不一样。现在调用的是mrcp_sofia_event_callback()。
/** This callback will be called by SIP stack to process incoming events */
static void mrcp_sofia_event_callback(
nua_event_t nua_event,
int status,
char const *phrase,
nua_t *nua,
mrcp_sofia_agent_t *sofia_agent,
nua_handle_t *nh,
mrcp_sofia_session_t *sofia_session,
sip_t const *sip,
tagi_t tags[])
{
apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Receive SIP Event [%s] Status %d %s [%s]",
nua_event_name(nua_event),
status,
phrase,
so

本文分析了在mrcp_sofia_task_initialize中如何使用nua_create创建用户代理(UA),并设置了回调函数mrcp_sofia_event_callback。当遇到nua_i_state事件时,调用mrcp_sofia_on_state_change进行处理。详细探讨了nua_callstate枚举类型的各个状态,以及mrcp_sofia_on_state_change的具体实现。
最低0.47元/天 解锁文章
1088





