XML FREESWITCH APPLICATION 实现
XML
XML在FS(FreeSwitch)中进行了大量的使用,其中dialplan就是其中非常主要的一快内容。通过下面的描述,我们可以知道在执行XML中的语句:
<action application="set" data="$1" />
如何关联到其实现?可以在哪里看到其实现?其具体实现是什么?
下面让我们来看看FS是如何做的!以上面的XML语句为例子。
1、如何关联到其实现
FS的channel处于EXCUTE状态时:根据在XML上读取的application和data并调用回调函数进行执行。以上面例子为例:application为set,data为$1(1234,这里传入的解析后的结果)
调用过程为:
switch_core_standard_on_execute ->
switch_core_session_execute_application->
switch_core_session_execute_application_get_flags->
switch_core_session_exec 此函数里面执行: application_interface->application_function(session, expanded);
Application_function为回调函数。
具体的执行函数为在系统初始化加载各个模块时,会加载的各个application,并赋值给函数指针。所以当执行上面的蓝色标记的回调函数时,在FS的各个module上对应的application就会被执行。
2、具体实现
也以上述的例子为例,set是在mod_dptool上注册的。(我们如何知道在哪里注册?当启动FS的时候,在窗口打印的信息里面就有application的注册信息,就可以知道在那个模块实现。)
Set的实现为:
SWITCH_STANDARD_APP(set_function) //这个为宏定义
{
base_set(session, data, SWITCH_STACK_BOTTOM);
}
打开DEBUG日志就可以看到以下日志信息:
2013-07-03 01:29:55.013184 [DEBUG] mod_dptools.c:1373 sofia/internal/1001@192.168.152.129 SET [1234]=[UNDEF]
3、实现功能
根据上面的分析就可以得出每个application的实现都是不一样的。所以具体实现请查看具体的代码。这里不再分析。
注:xml里面的application名字和函数名字的换算关系为:application_function,具体的调用情况不再进行讲述。
XML FREESWITCH APPLICATION 实现的更多相关文章
- Jsoup问题---获取http协议请求失败 org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml.
Jsoup问题---获取http协议请求失败 1.问题:用Jsoup在获取一些网站的数据时,起初获取很顺利,但是在访问某浪的数据是Jsoup报错,应该是请求头里面的请求类型(ContextType)不 ...
- Jsoup获取部分页面数据失败 org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml.
用Jsoup在获取一些网站的数据时,起初获取很顺利,但是在访问某浪的数据是Jsoup报错,应该是请求头里面的请求类型(ContextType)不符合要求. 请求代码如下: private static ...
- Jsoup获取部分页面数据失败 Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml
用Jsoup在获取一些网站的数据时,起初获取很顺利,但是在访问某浪的数据是Jsoup报错,应该是请求头里面的请求类型(ContextType)不符合要求. 请求代码如下: private static ...
- Android,配置Activity为启动Activity(AndroidManifest.xml,application,intent-filter,MAIN,LAUNCHER)
备忘: 将Activity注册为启动Activity. 在AndroidManifest.xml中的<application>元素中加入以下<activity>子元素内容: & ...
- 有关spring-servlet.xml 和 application.xml的配置信息讲解(这两个配置信息的区别在哪里)
在使用springmvc时需要配置得信息有两个,一个是spring-servlet.xml和applcation.xml: 首先两个文件的的存放位置就有一点的不同(见下图),application.x ...
- SpringBoot中logback.xml使用application.yml中属性
教你如何使用 springProfile 与 springProperty 让你的logback.xml 配置显得更有逼格,当别人还在苦苦挣扎弄logback-{profile}.xml的时候 你一个 ...
- springmvc web.xml和application.xml配置详情(附:完整版pom.xml)
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="htt ...
- java -jar 指定logback.xml、application.yaml
java -jar 指定logback.xml -Dlogging.config="C:\logbacs\logback.xml" 示例:java -jar -Dlogging ...
- application/xml 和 text/xml的区别
application/xml and text/xml的区别 经常看到有关xml时提到"application/xml" 和 "text/xml"两种类型, ...
随机推荐
- Dedecms当前位置{dede:field name='position'/}修改
这个实在list_article.htm模板出现的,而这个模板通过loadtemplage等等一系列操作是调用的include 下的arc.archives.class.php $this->F ...
- Asp.net 事务处理
事务处理是在数据处理时经常遇到的问题,经常用到的方法有以下三种总结整理如下:方法1:直接写入到sql 中在存储过程中使用 BEGIN TRANS, COMMIT TRANS, ROLLBACK TRA ...
- UILabel,UITextField,UIButton三大基础控件总结
(一)UILabel空件 属性: 1.背景颜色 label.backgroundColor = [UIColor ***]; 2. 显示文字: label.text = @"******&q ...
- WPF 弱事件
因为在接触WPF的过程中追查INotifyPropertyChanged的通知原理的时候,发现了 PropertyChangedEventManager这个类,它是继承与WeakEventManage ...
- Linux 查看文件内容的命令
转载自:新浪博客 (观看档案内容 : cat, tac, more, less, head, tail, nl, 刚刚我们提到的都只是在于显示档案的外观,或者是移动与复制一个档案或目录而已,那么如果我 ...
- Spring MVC PageNotFound.noHandlerFound No mapping found for HTTP request with URI
首先骂人,干他娘的,弄了两个小时原来的包倒错了!!唉TMD. 注意用IDEA倒包的时候一定要注意ModelAndView是 原因是import出错了!!应该是import org.springfram ...
- C语言对数组取地址
#include <stdio.h> main() { ] = {,,,,}; printf("a=%p\n" , a); printf("a=%p\n&qu ...
- jquery实现DIV层拖动
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 多项式求和 AC 杭电
多项式求和 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- angular2 学习笔记 ( DI 依赖注入 )
refer : http://blog.thoughtram.io/angular/2016/09/15/angular-2-final-is-out.html ( search Dependency ...