EasyDarwin添加自己的模块EasySIPModule

在一段时间的EasyDarwin代码研究之后,开始开发自己的功能模块,首先便是在EasyDarwin中添加一个新的模块。在此添加EasySIPModule作为讲解,在网上找到多片相关博文介绍,包括EasyDarwin开源社区的博主文章。都有详细介绍,但是都缺少一些其他步骤,在此主要是自己尝试后整理所有步骤。

添加代码

在EasyDarwin/APIModule/下新建EasySIPModule目录,在EasySIPModule下新建EasySIPModule.h和EasySIPModule.cpp

EasyDarwin模块有两个必须的函数:

  1. Main函数,即这个模块的入口函数,在服务器启动的时候调用,对当前模块所在的QTSS stub库进行初始化。
  2. Dispatch函数,模块的分发函数,函数根据传入的Role调用对应的功能函数。

Main函数

主函数在服务器启动的时候就会被调用,新添加的EasySIPModule主函数在EasySIPModule.h声明如下:

EasyDarwin添加自己的模块EasySIPModule_第1张图片

在EasySIPModule.cpp定义如下:

这里的EasySIPModule_Main是Main函数名,是固定的,其中EasySIPModule是包含模块的文件名称(EasySIPModule.cpp),

EasySIPModuleDispatch是模块分发函数的名称。

Dispatch函数

如上面所讲到的,EasySIPModuleDispatch就是模块分发函数的名称。不是固定的,定义为静态函数:

分发函数实现为switch函数调用:

EasyDarwin添加自己的模块EasySIPModule_第2张图片

inRole就是传递过来的角色名称,只有注册了该角色的模块才会被调用(每个模块都可以注册角色就是一个行为),inParamBlock是一个结构体,包含模块需要用到的变量,如RTSP请求。

其中不同的case就是执行模块不同的功能函数,功能函数和分发函数一样定义为静态函数:

EasyDarwin添加自己的模块EasySIPModule_第3张图片

加入到编译代码

为了将新增的模块代码编译为服务器的一部分,需要在EasyDarwin/Server.tproj/下的QTSServer.cpp中找到QTSServer::LoadCompiledInModules函数,添加如下代码:

EasyDarwin添加自己的模块EasySIPModule_第4张图片

并且在QTSServer.cpp引入EasySIPModule.h。

在此,EasySIPModule指新增的模块名称,EasySIPModule_Main指前面添加的模块主函数。

修改Makefile

代码添加完后,便需要修改Makefile编译文件,本次运行环境为Ubuntu14 64位,所以修改的是EasyDarwin/nbproject/下的Makefile-x64.mk。

修改方法就是添加一个新模块对象生成项并指定生成规则:

然后编译成功就完成将新模块EasySIPModuleti添加到EasyDarwin。

你可能感兴趣的:(EasyDarwin,Linux,流媒体)