`
JoeJJ
  • 浏览: 31515 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

FreeSWITCH代码分析之状态机

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


2 状态发生改变时,依次执行下面回调
  • 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()获得

      
3 mod_sofia的状态机跳转
  • CS_NEW ->  CS_INIT : 收到nua_callstate_received时,有SDP
  • CS_INIT -> CS_ROUTING : sofia_on_init()
  • CS_ROUTING -> CS_EXEUTE:
  • CS_EXEUTE ->...


  ...继续
分享到:
评论

相关推荐

    Freeswitch 源码分析

    ### Freeswitch源码分析 #### 一、Freeswitch简介 Freeswitch是一个高度可扩展的开源跨平台电话系统,能够支持音频、视频、文本等不同形式的媒体通信协议的路由与交互处理。该软件自2006年由Anthony Minessale发起...

    freeswitch源代码

    voip服务器源代码 提供音频视频服务 freeswitch

    freeswitch源码

    1. **模块化设计**:FreeSWITCH的核心特性之一是其模块化结构。源码中的各个模块负责不同的功能,如媒体处理、信号控制、数据库交互等。这使得系统可以灵活地添加或移除功能,以适应不同的应用场景。 2. **语言支持...

    freeswitch1.9版本源码

    freeswitch是一个电话的软交换解决方案。在客服系统中freeswitch有举足轻重的作用,以前是基于freeswitch1.6.15的基础上进行开发的,现在freeswitch版本更新到1.9,。

    freeSwitch SIP 模块分析

    freeSwitch中的SIP模块是其核心功能之一,它负责处理SIP消息的接收、解析、路由和响应。在这个模块中,我们可以学习到如何处理SIP请求和响应,以及如何与其他通信系统进行交互。SIP模块的工作流程通常包括注册、邀请...

    Freeswitch软件架构分析

    1. 背景 2 2. 项目需求 2 3. 部署 2 4. 软件框架 3 4.1模块描述 3 4.2软件架构 4 4.3模块加载机制 5 4.4应用(Applications) 6 4.4.1电话生命周期 6 ...4.16.5 session状态监测线程 32 4.16.6 其它 32

    freeSwitch架构设计分析和sip模块分析

    在FreeSwitch中,SIP模块负责解析和生成SIP消息,执行路由决策,并处理会话状态。它包括了以下关键功能: 1. **SIP消息处理**:接收和发送SIP请求和响应,如INVITE、ACK、BYE等,确保SIP消息的正确传递。 2. **路由...

    freeswitch-callcenter模块介绍

    freeswitch-callcenter模块介绍,包括ACD的功能控制模块的功能讲解。

    centos安装freeswitch过程实录

    ### CentOS安装FreeSWITCH过程实录 #### 一、安装依赖的第三方库 在开始部署FreeSWITCH之前,首先需要确保CentOS系统已安装了一系列必要的依赖库。这些库包括但不限于编译工具(如`gcc-c++`)、网络库(如`curl-...

    基于FreeSWITCH开发的呼叫中心管理平台源码.zip

    这个源码包提供了完整的呼叫中心平台的源代码,可以帮助开发者深入了解呼叫中心的工作机制,并进行二次开发和定制。 在基于FreeSWITCH的呼叫中心管理平台中,有以下几个关键知识点: 1. **FreeSWITCH核心功能**:...

    Freeswitch权威指南,freeswitch权威指南 pdf,C,C++源码.zip

    通过阅读和分析源码,读者不仅可以了解Freeswitch的内部工作机制,还可以学习到如何编写高效、稳定的网络通信程序。 在深入探讨技术细节的同时,《Freeswitch权威指南》还会提供实际案例,指导读者如何部署和优化...

    基于freeswitch的电话号码加密demo

    为了更好地理解并运用这个demo,你需要阅读和理解代码,了解其加密机制和配置方法,然后根据自己的Freeswitch环境进行相应的调整和测试。同时,注意遵守相关的法律法规,尤其是在处理个人数据时,确保符合数据保护...

    FreeSWITCH-1.6.5.tar.gz源代码

    FreeSWITCH源代码下载,2015最新稳定版

    FreeSWITCH 1.8.pdf

    FreeSWITCH能够运行在Linux、Windows、OS X等操作系统之上,并且其模块化的架构允许对不同功能进行添加、修改或替换,从而满足特定的应用需求。此外,FreeSWITCH社区活跃,有着广泛的文档支持和众多开发者的贡献,这...

    FreeSWITCH简要使用教程V1.1

    3. **命令行控制台**:学习使用FSCTL(FreeSWITCH控制台)进行实时监控和控制,如启动、停止、查看状态等操作。 4. **SIP配置**:理解SIP信令的基本概念,并学习如何配置FreeSWITCH作为SIP服务器,连接到其他SIP...

    FreeSwitch搭建软交换中心指导

    6. 获取 FreeSwitch 源码:cd /usr/local/src git clone -b v1.6 https://freeswitch.org/stash/scm/fs/freeswitch.git 7. 编译和安装 FreeSwitch:cd /usr/local/src/freeswitch ./bootstrap.sh -j ./configure ...

    Freeswitch权威指南,freeswitch权威指南 pdf,C,C++

    FreeSWITCH以其强大的功能、灵活的架构以及开放源代码的优势,在VoIP(Voice over Internet Protocol)领域内备受关注。这本书将引领读者深入理解这一技术的核心概念、工作原理和实际应用。 FreeSWITCH是由C语言...

    Freeswitch集成科大讯飞及百度语音服务_freeswitch_

    【Freeswitch集成科大讯飞及百度语音服务】是一个关于如何在Freeswitch系统中整合科大讯飞和百度的语音服务的技术文档。Freeswitch是一个开源的通信平台,常用于建立VoIP(Voice over Internet Protocol)系统,提供...

    freeswitch

    1. **获取源码**:从官方仓库下载freeswitch-1.6.15压缩包并解压。 2. **编译与安装**:运行配置脚本,编译源代码,并进行安装。 3. **配置文件**:根据需求修改默认的XML配置文件,如`autoload_configs`目录下的...

    FreeSwitch源码安装记录.docx

    本篇文章详细记录了在CentOS 7.5环境下,通过源码编译安装FreeSwitch 1.8.2的过程,以下是具体的步骤和注意事项: ### 一、系统环境准备 确保操作系统为64位CentOS 7.5.1804,并更新系统到最新状态。检查内核版本和...

Global site tag (gtag.js) - Google Analytics