apt_poller_tas.apt_poller_task_run–> mrcp_client_connection.mrcp_client_poller_signal_process–>
sendrecv.apr_socket_recv –>
mrcp_stream.mrcp_parser_run –>
mrcp_client_connection.mrcp_client_message_handler–>
mrcp_client_connection.mrcp_connection_channel_find–>
mrcp_connection_types.mrcp_connection_message_receive–>
mrcp_client.mrcp_client_message_signal–>
mrcp_client.mrcp_client_connection_task_msg_signal–>
apt_task.apt_task_msg_signal–>
apt_consumer_task.apt_consumer_task_msg_signal–>
apr_queue.apr_queue_push
pt_poller_task_run是一个无线循环,会不断调用mrcp_client_poller_signal_process()函数,在mrcp_client_poller_signal_process()中,会通过apr_socket_recv函数在socket上阻塞等待数据,然后通过mrcp_parser_run解析接收到的数据包。
这个函数的实现我在博文freeswitch mrcp 源码分析–数据解析已经进行了详细介绍。
数据解析完成后会调用mrcp_client_message_handler处理接收到的数据,
在mrcp_client_message_handler中先调用mrcp_connection_channel_find通过通道编码找到对应的通道,然后调用mrcp_connection_message_receiv处理接收到的数据。
mrcp_c

本文深入分析了Freeswitch中MRCP数据接收的流程,从`apt_poller_task_run`开始,经过`mrcp_client_connection`、`mrcp_parser_run`到`mrcp_connection_message_receive`,详细阐述了数据接收、解析和处理的过程,最终通过`apt_consumer_task_msg_signal`将消息推入队列并唤醒消费线程。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



