FreeSWITCH代码分析之状态机

[size=large][b]1 switch_core_state_machine 状态机部分概要[/b][/size]
[list]
[*]状态机部分实现在switch_core_state_machine.c文件,处理函数是switch_core_session_run()
[*] 状态机状态的跳转条件主要是外围逻辑控制,并不是状态机内置好固定的跳转条件,也有跳转条件是状态机内部设定,例如由CS_ROUTING->CS_EXECUTE
[*] 改变状态机通过调用: switch_channel_set_state()
[*] 当状态发送变化后,状态机内部通过switch_channel_set_running_state()改变running_state,并执行相关的回调来通知其状态已经发生改变了。
[/list]

[size=medium][b]2 状态发生改变时,依次执行下面回调[/b][/size]
[list]
[*] endpoint_interface->io_routines->state_run()
[*] session->event_hooks.state_run() //可以通过switch_core_event_hook_add_state()获得
[*] endpoint_interface->state_handler //在STATE_MACRO()
[*] switch_event_fire() //触发SWITCH_EVENT_CHANNEL_CREATE之类的事件,可以通过switch_event_bind()获得
[/list]

[size=medium][b]3 mod_sofia的状态机跳转[/b][/size]
[list]
[*] CS_NEW -> CS_INIT : 收到nua_callstate_received时,有SDP
[*] CS_INIT -> CS_ROUTING : sofia_on_init()
[*] CS_ROUTING -> CS_EXEUTE:
[*] CS_EXEUTE ->...
[/list]

...继续
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值