我建了一个 Freeswitch 内核研究 交流群, 45211986, 欢迎加入, 另外,承接 基于SIP的通信服务器及客户端解决方案。
freeswitch 为支持跨平台,底层库使用 apache portable runtime lib(apr),其作者之前的工作中一直接触apache.
swith_apr.c 中为 freeswitch引用 apr提供的所有工具库接口函数的重新定义,目的是为了统一。
当通信层采用sip协议时,mod_sofia 模块被使用,此模块为 对诺基亚开源sip协议栈sofia sip的访问入口,
mod_sofia 为内核启动后的驱动入口。
sip 模块在文件 mod_sofia.c文件中。
SWITCH_MODULE_LOAD_FUNCTION(name) 为每个可加载模块的入口,系统启动时根据module.xml配置动态加载配置的模块。
与动态模块加载相关的宏定义在switch_types.h里,每个模块会定义模块加载,运行,移除对应的回调。
SWITCH_MODULE_LOAD_FUNCTION
SWITCH_MODULE_SHUTDOWN_FUNCTION
SWITCH_MODULE_DEFINITION
所以,sip 模块的加载入口在 SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load)
mod_sofia_globals 结构保存sip 运行时全局配置,首先设置一些全局配置,然后进入