微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XML FREESWITCH APPLICATION 实现

XML

XMLFSFreeSwitch)中进行了大量的使用,其中dialplan就是其中非常主要的一快内容。通过下面的描述,我们可以知道在执行XML中的语句:

<actionapplication="set"data="$1"/>

如何关联到其实现?可以在哪里看到其实现?其具体实现是什么?

下面让我们来看看FS是如何做的!以上面的XML语句为例子。

1、如何关联到其实现

FSchannel处于EXCUTE状态时:根据在XML上读取的applicationdata调用回调函数进行执行。以上面例子为例:applicationsetdata$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-0301:29:55.013184[DEBUG]mod_dptools.c:1373 sofia/internal/1001@192.168.152.129SET[1234]=[UNDEF]

3、实现功能

根据上面的分析就可以得出每个application的实现都是不一样的。所以具体实现请查看具体的代码。这里不再分析。

注:xml里面的application名字和函数名字的换算关系为:application_function,具体的调用情况不再进行讲述。

原文地址:https://www.jb51.cc/xml/300230.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。