Skip to content

Chapter 1:NFPluginLoader,Plugin,Module

yigao edited this page Jun 26, 2022 · 17 revisions

整个服务器最主要的进程文件就是NFPluginLoader,以及各种各样的so文件,NFPluginLoader通过so文件的加载,实现NFCPluginManager引擎管理类对plugin类,module类的管理,查询。服务器最重要的三个类分别是:NFCPluginManager, NFIPlugin, NFIModule:

NFCPluginManager通过对类NFIPlugin,NFIModule的管理,来实现对整个服务器调度。

  1. NFCPluginManager存有所有的NFIPlugin,NFIModule的指针, 通过FindModule()函数随时查找NFIModule实例,实现对全局业务的调度,比如:

    FindModule()->InitLogSystem()

    FindModule()->LoadConfig()

  2. NFCPluginManager的Begin函数负责服务器启动,End函数负责正规退出服务器,Execute负责服务器死循环执行,并通过每一次运行的时间控制,来实现服务器的帧频

NFIPlugin负责对一个编译成so文件的库进行组织, 每一个so文件都必须有一个类继承NFIPlugin, 比如:

`XY@%_FODL (TA0S$)OEJ12

继承NFIPlugin的类都比较简单,没有复杂业务,只需实现这几个函数即可,最重要的就是Install,InitShmObjectRegister

  • Install用来注册module

}NV G{Z02~`}GILW9G)KH(1

  • InitShmObjectRegister用来注册共享内存类

@)3RLD4}4(F(RP CYAAJDH2

NFIModule是业务类的基础抽象,要想实现具体业务,就必须定义一个或几个类来继承NFIModule, 并注册到NFIPlugin类的实例中,来挂钩上NFCPluginManager系统, 比

如:NFWorldServerPlayerPlugin::Install()函数里, 通过REGISTER_MODULE宏来注册module

    REGISTER_MODULE(m_pPluginManager, NFIWorldPlayerModule, NFCWorldPlayerModule);

注册后,就可以通过FindModule<NFIWorldPlayerModule>来调用到这个module