来源:自学PHP网 时间:2015-04-14 14:51 作者: 阅读:次
[导读] XMLXML在FS(FreeSwitch)中进行了大量的使用,其中dialplan就是其中非常主要的一快内容。通过下面的描述,我们可以知道在执行XML中的语句:action application=set data=$1 /如何关联到其实现?可...
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,具体的调用情况不再进行讲述。
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com