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,具体的调用情况不再进行讲述。

最新文章

  1. Myeclipse反编译插件的安装
  2. Mac使用极简教程
  3. Thinking Of Matrix
  4. WEB前端工程师面试题【前端】
  5. [工作中的设计模式]策略模式stategy
  6. (C/C++) Interview in English - Class
  7. json_encode charset
  8. 基于Maven管理的Mapreduce程序下载依赖包到LIB目录
  9. (转)C#中的Dictionary字典类介绍
  10. BITE
  11. jquery datatable数据初始化
  12. 初识DMA
  13. 使用 JSON-lib 出现异常 java.lang.reflect.InvocationTargetException
  14. idea集成uglifyjs2
  15. javascript如何操作数组
  16. 微软BI 之SSRS 系列 - 如何在 MDX 查询中获取有效的 MEMBER 成员属性作为参数传递
  17. 安装二维码、条形码识别工具zbar
  18. abap异常处理 , update module
  19. sftp服务器的安装与远程
  20. STORJ 有实际应用

热门文章

  1. Linux sed命令在指定行前后添加内容
  2. ASP.NET菜鸟之路之登录系统
  3. (git fetch git push git pull)远程本地分支互相推送更新
  4. 织梦dede标签tags的美化教程
  5. DeDe友情链接
  6. Centos 6安装python3.5
  7. scrapy1.1入门用例简介
  8. Python新手学习基础之数据结构-列表2 添加
  9. IOS快速开发之常量定义
  10. 用Javascript的for循环输出质数