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代码分析相关推荐

  1. 20145236《网络攻防》Exp4 恶意代码分析

    20145236<网络攻防>Exp4 恶意代码分析 一.基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些 ...

  2. C#中类的继承 override virtual new的作用以及代码分析

    继承中override virtual new的作用 virtual 父类中需要注明允许重写的方法: override 子类中必须显示声明该方法是重写的父类中的方法: new 子类中忽略父类的已存在的 ...

  3. 2017.4.18 静态代码分析工具sonarqube+sonar-runner的安装配置及使用

    配置成功后的代码分析页面: 可以看到对复杂度.语法使用.重复度等等都做了分析,具体到了每一个方法和每一句代码. 四种使用方式: sonarqube + sonar-runner sonarqube + ...

  4. lighttpd1.4.18代码分析

    lighttpd1.4.18代码分析(八)--状态机(2)CON_STATE_READ状态 posted @ 2008-09-24 10:50 那谁 阅读(2225) | 评论 (1)  编辑 lig ...

  5. Device Tree(三):代码分析

    2019独角兽企业重金招聘Python工程师标准>>> 一.前言 Device Tree总共有三篇,分别是: 1.为何要引入Device Tree,这个机制是用来解决什么问题的?(请 ...

  6. 使用Hadoop和ELK进行业务代码分析!分分钟捉到Bug!

    大数据是计算领域的新高地,它有望提供一种方法来应对二十一世纪不断增长的数据生成.越来越多的大数据爱好者正在涌现,越来越多的公司正在采用各种大数据平台,并希望提出以客户为中心的解决方案,帮助他们在竞争激 ...

  7. 20145328 《网络对抗技术》恶意代码分析

    20145328 <网络对抗技术>恶意代码分析 ------看到这句话说明还没写完-------- 实践内容: 使用schtasks指令监控系统运行 使用sysmon工具监控系统运行 使用 ...

  8. starGAN原理代码分析

    下载: git clone https://github.com/yunjey/StarGAN.git 1 cd StarGAN/ 1 下载celebA训练数据: bash download.sh 1 ...

  9. tensorflow笔记:多层CNN代码分析

    tensorflow笔记系列:  (一) tensorflow笔记:流程,概念和简单代码注释  (二) tensorflow笔记:多层CNN代码分析  (三) tensorflow笔记:多层LSTM代 ...

  10. ARM裸机篇---启动代码分析

    ARM裸机篇---启动代码分析 先搞清楚启动代码和Bootloader的区别,启动代码是指CPU复位后到进入C语言的main函数之前需要执行的那段汇编代码. 下面的代码先暂且这样吧,没啥注释的,时间关 ...

最新文章

  1. CSP 201812-2 小明放学 Python实现+详解
  2. UA MATH564 概率不等式 QE练习题
  3. 文巾解题 344 反转字符串
  4. ESXI主机定时重启脚本
  5. python如何通过以太网发送指令_用scapy在python中编写一个以太网桥
  6. 【Linux】一步一步学Linux——fc命令(224)
  7. c json输出html标签,Json编码HTML字符串
  8. Ubuntu18.04安装最新R语言环境的方法
  9. apiCloud实现加载更多效果,基本完美~
  10. c# listView
  11. 家庭收支软件的示例--面向对象版本
  12. Linux上安装gcc
  13. 长尾关键词生成工具-长尾关键词生成软件免费-关键词组合工具
  14. 几种流行Webservice框架
  15. 自定义启动 android_什么是自定义Android启动器,以及为什么可能要使用一个
  16. python高级练习题:取消列表(比简单更难)【难度:4级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
  17. chrome插件推荐:FaWave(发微)
  18. python关于类和对象说法正确的是_关于类和对象的关系,下列描述正确的是()。
  19. Python数据分析:异常值检验的两种方法 -- Z 分数 上下分位点(放入自写库,一行代码快速实现)
  20. 会导致电脑蓝屏的wav文件原因未知 log whea logger 17 realtek alc269系统播放音频崩溃

热门文章

  1. linux SCALA 安装及环境配置
  2. Matlab学习笔记(一)--数值数据
  3. selenium模拟鼠标滑动
  4. PaysApi第三方支付接口的接入与使用 React前端SSM后端
  5. cnpm 安装yarn
  6. 【数据分析】决策树案例详解
  7. 从IAP升级到涂鸦OTA升级介绍 (下)
  8. android图片的透明度变化,Android如何实现改变图片的透明度
  9. 放弃幻想,全面拥抱Transformer:自然语言处理三大特征抽取器(CNN/RNN/TF)比较
  10. Python爬虫进行Web数据挖掘总结和分析