freeswitch的mod_event_socket模块分析报告

更新时间:2023-06-18 02:59:08 阅读: 评论:0

Mod_event_socket模块分析
一、 mod_event_socket 功能
新东方学校1、 学士学位英语描述
mod_event_socketsocket的形式,对外提供控制television的音标FS一种途径,缺省的IP127.0.0.1TCP端口是8021可以在外部通过sokcet执行API/APP命令。配置文件是conf/autoload_f.xml,连接分两种模式: inbound/outboundmod_event_socket 的默认加载模式是inbound,outbound模式需要在dialplan的配置文件中设置。mod_event_socktet的配置文件是i econf/autoload_configs/f.xml。在配置文件中可以设置listen-iplisten-portpassword等。
2、 ACL控制表
设置连接的访问控制列表,,可以在l设置,也可以在f.xml中设置IP范围。下面例子是f.xml中启动ACL<param name="apply-inbound-a
cl" value="<acl_list|cidr>"/>
acl表的在listener_run()线程中被使用,检查连接cheap什么意思IP等。
3、 命令解析
socket中读取的数据进行解析(par_command()函数完成解析功能)。
unload
reload
api(阻塞模式)
api <command> <arg>
例如:
api originate / 1000  # connect sip: to extension 1000
api sleep 5000
bapi(非阻塞模式)
bgapi <command> <arg> 
    apibapi 只是执行方式不同,都是执行API命令。API命令很多见第三部分“命令列表”
event
启动或禁止接收任意类型的事件。例如:
 event plain ALL
 event plain CUSTOM conference::maintenance
 event plain CHANNEL_CREATE CHANNEL_DESTROY CUSTOM conference::maintenance sofia::register sofia::expire

事件类型见第四部分“事件列表”
myevents
接收uuid的所有消息
divert_event
脚本注册测接收事件的函数分转到牛津小学英语2bevent socket
filter
设置event socket 接收事件类型
ndevent
发送一个事件到系统队列中
ndmsg
给一个uuid发送一个消息,可以执行其他模块的应用接口,也可以挂断电话等。例如:
SendMsg <uuid>
call-command: execute                  (两种命令execute/hangup/unicast/nomedia)
execute-app-name: playback             (应用模块名称)
execute-app-arg: /tmp/test.wav         (参数)
天道培训∙ exit
退出
auth
认证
log
启动日志
nolog
禁止日志
nixevent
启动日志
noevents
禁止事件
二、 源码分析
1、 整体流程
mod_event_socket_load():注册SWITCH_EVENT_ALL事件接收端口函数event_handler(),创建APPsocket_function/APIevent_sink_function)接口。加载完成后,系统会自动为runtime函数创建线程mod_event_socket_runtime();线程内部接收连接,并初始listener结构,为listener创建线程listener_run();
2、 APP接口
socket_function 是为FS提供OutBound模式提供的一个APP接口。
3、 API接口
event_sink_function是为FSooc什么意思提供的以http协议方式控制FS的接口。
4、 APIattend命令流程
执行其他模块已经注册的API接口。流程如下:listener_run()>>read_packet()>>par_command()>>create api_exec()线程()/api_exec()>>switch_api_execute()>>api->function()/switch_console_execute()
5、 事件处理
mod_event_load()>>注册接收所有事件接口event_handler()event_handler()接收到的信息,分发到连接对象listener的队列event_queue上。listener_run()>>read_packet()>>读取队列event_queue的事件,发送到socket
6、 ndmsg命令
判断listener是否以异步方式执行,如果是,将以事件的方式如对ssion->private_event_queue。如果不是,调用switch_ivr_par_event()。调用流程:listener_run()>>read_packet()>>par_command()>>
switch_ivr_par_event()>>如果命令是"execute"执行switch_core_ssion_execute_application()最主要功能是执行其它模块已经注册的APP接口。
7、 线程同步
主线程是mod_event_socket_runtime();每一个连接创建一个子线程listener_run(),他们之
间的独立运行,当mod_event_socket_shutdown()被调用后,变量prefs.done=1;则主线程和子线程,检查到这个prefs.done==1,退出。
三、 命令列表
1icijCore Commands 
  acl | alias | bgapi | break | complete | cond | domain_exists | eval | expand | fsctl | min_dtmf_duration | max_dtmf_duration | default_dtmf_duration | global_getvar | global_tvar | host_lookup | hupall | in_group | is_lan_addr | load | md5 | module_exists | nat_map | reloadxml | show | shutdown | status | strftime_tz | unload | version | xml_locate | xml_wrap
2Call Management Commands 
    create_uuid | group_call | help | originate | pau | regex | reload | reloadacl | uuid_audio | uuid_bridge | uuid_broadcast | uuid_chat | uuid_debug_audio | uuid_deflect | uuid_displace | uuid_display | uuid_dump | uuid_exists | uuid_flush_dtmf | uuid_getvar | uuid_hold | uuid_kill | uuid_media | uuid_park | uuid_nd_dtmf | uuid_ssion_heartbeat | uuid_tvar | uuid_tvar_multi | uuid_transfer | uuid_simplify
3 Record/Playback Commands 
    uuid_record 
4 Misc. Commands 
    bg_system | echo | find_ur_xml | sched_api | sched_broadcast | sched_del | sched_hangup | sched_transfer | stun | system | time_test | timer_test | tone_detect | unsched_api | url_decode | url_encode | ur_data | ur_exists
四、 事件列表
1Channel events 
    Channel states | CHANNEL_CREATE | CHANNEL_DESTROY | CHANNEL_STATE | CHANNEL_ANSWER | CHANNEL_HANGUP | CHANNEL_HANGUP_COMPLETE | CHANNEL_EXECUTE | CHANNEL_EXECUTE_COMPLETE | CHANNEL_BRIDGE | CHANNEL_UNBRIDGE | CHANNEL_PROGRESS | CHANNEL_PROGRESS_MEDIA | CHANNEL_OUTGOING | CHANNEL_PARK | CHANNEL_UNPARK | CHANNEL_APPLICATION | CHANNEL_ORIGINATE | CHANNEL_UUID 
2System events 
     SHUTDOWN | MODULE_LOAD | MODULE_UNLOAD | RELOADXML | NOTIFY | SEND_MESSAGE | RECV_MESSAGE | REQUEST_PARAMS | CHANNEL_DATA | GENERAL | COMMAND | SESSION_HEARTBEAT | CLIENT_DISCONNECTED | SERVER_DISCONNECTED | SEND_INFO | RECV_INFO | CALL_SECURE | NAT | RECORD_START | RECORD_STOP | CALL_UPDATE |

本文发布于:2023-06-18 02:59:08,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/980146.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:事件   接收   连接   模块   执行   模式   线程
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图