FreeSwitch uuid_bridge代码分析
uuid_bridge是个API调用。它的功能是把两个channel桥接在一起。
uuid_bridge是由mod_commands模块实现的。这个模块实现了很多API命令接口。首先从SWITCH_MODULE_LOAD_FUNCTION(mod_commands_load)里找API的实现映射,即入口函数名uuid_bridge_function:
跳转到函数的实现处:
这个函数很短,关键调用就一个:switch_ivr_uuid_bridge。
接下来看看switch_ivr_uuid_bridge的实现,在switch_ivr_bridge.c文件里。
首先是定位session,注意,switch_core_session_locate返回时会对session对象上锁,需要调用方释放。
接下来是对一系列channel flag的检查和设置,还有通道变量的设置,逻辑比较简单。
如果有broadcast,停下来。
最后这几行很重要:它设置了自定义的handler,所以channel的wrok 线程执行时,就会处理bridge的逻辑。
到这里,command执行完毕,但bridge还没有真正执行。bridge是在originator_channel状态迁移的回调中处理的。
注册的回调:
剩下的事,就是channel 的工作线程响应状态迁移要完成的了。
FreeSwitch uuid_bridge代码分析相关推荐
- 20145236《网络攻防》Exp4 恶意代码分析
20145236<网络攻防>Exp4 恶意代码分析 一.基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些 ...
- C#中类的继承 override virtual new的作用以及代码分析
继承中override virtual new的作用 virtual 父类中需要注明允许重写的方法: override 子类中必须显示声明该方法是重写的父类中的方法: new 子类中忽略父类的已存在的 ...
- 2017.4.18 静态代码分析工具sonarqube+sonar-runner的安装配置及使用
配置成功后的代码分析页面: 可以看到对复杂度.语法使用.重复度等等都做了分析,具体到了每一个方法和每一句代码. 四种使用方式: sonarqube + sonar-runner sonarqube + ...
- lighttpd1.4.18代码分析
lighttpd1.4.18代码分析(八)--状态机(2)CON_STATE_READ状态 posted @ 2008-09-24 10:50 那谁 阅读(2225) | 评论 (1) 编辑 lig ...
- Device Tree(三):代码分析
2019独角兽企业重金招聘Python工程师标准>>> 一.前言 Device Tree总共有三篇,分别是: 1.为何要引入Device Tree,这个机制是用来解决什么问题的?(请 ...
- 使用Hadoop和ELK进行业务代码分析!分分钟捉到Bug!
大数据是计算领域的新高地,它有望提供一种方法来应对二十一世纪不断增长的数据生成.越来越多的大数据爱好者正在涌现,越来越多的公司正在采用各种大数据平台,并希望提出以客户为中心的解决方案,帮助他们在竞争激 ...
- 20145328 《网络对抗技术》恶意代码分析
20145328 <网络对抗技术>恶意代码分析 ------看到这句话说明还没写完-------- 实践内容: 使用schtasks指令监控系统运行 使用sysmon工具监控系统运行 使用 ...
- starGAN原理代码分析
下载: git clone https://github.com/yunjey/StarGAN.git 1 cd StarGAN/ 1 下载celebA训练数据: bash download.sh 1 ...
- tensorflow笔记:多层CNN代码分析
tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) tensorflow笔记:多层CNN代码分析 (三) tensorflow笔记:多层LSTM代 ...
- ARM裸机篇---启动代码分析
ARM裸机篇---启动代码分析 先搞清楚启动代码和Bootloader的区别,启动代码是指CPU复位后到进入C语言的main函数之前需要执行的那段汇编代码. 下面的代码先暂且这样吧,没啥注释的,时间关 ...
最新文章
- CSP 201812-2 小明放学 Python实现+详解
- UA MATH564 概率不等式 QE练习题
- 文巾解题 344 反转字符串
- ESXI主机定时重启脚本
- python如何通过以太网发送指令_用scapy在python中编写一个以太网桥
- 【Linux】一步一步学Linux——fc命令(224)
- c json输出html标签,Json编码HTML字符串
- Ubuntu18.04安装最新R语言环境的方法
- apiCloud实现加载更多效果,基本完美~
- c# listView
- 家庭收支软件的示例--面向对象版本
- Linux上安装gcc
- 长尾关键词生成工具-长尾关键词生成软件免费-关键词组合工具
- 几种流行Webservice框架
- 自定义启动 android_什么是自定义Android启动器,以及为什么可能要使用一个
- python高级练习题:取消列表(比简单更难)【难度:4级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
- chrome插件推荐:FaWave(发微)
- python关于类和对象说法正确的是_关于类和对象的关系,下列描述正确的是()。
- Python数据分析:异常值检验的两种方法 -- Z 分数 上下分位点(放入自写库,一行代码快速实现)
- 会导致电脑蓝屏的wav文件原因未知 log whea logger 17 realtek alc269系统播放音频崩溃