ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
ngl::nmanage_dbclient Class Reference

数据库客户端管理器,协调多个ndbclient实例的加载、保存和生命周期管理。 More...

#include <nmanage_dbclient.h>

Public Member Functions

 nmanage_dbclient (actor_base *aactor)
 构造函数,绑定拥有者Actor。
 nmanage_dbclient (const nmanage_dbclient &)=delete
nmanage_dbclientoperator= (const nmanage_dbclient &)=delete
 nmanage_dbclient (nmanage_dbclient &&)=delete
nmanage_dbclientoperator= (nmanage_dbclient &&)=delete
void add (ndbclient_base *adbclient, const nguid &aid)
 添加一个数据库客户端并立即初始化其Actor绑定。
void set_loadfinish_function (const std::function< void(pbdb::ENUM_DB, enum_dbstat)> &afun)
 注册当一个数据库表加载完成时调用的Actor级回调。
void init (ndbclient_base *adbclient, actor_base *aactor, const nguid &aid)
 针对拥有者Actor和目标GUID初始化一个具体的dbclient。
bool on_load_finish (pbdb::ENUM_DB atype, enum_dbstat astat)
 提升已完成加载的数据库客户端,当所有客户端就绪时触发最终化钩子。
bool isloadfinish () const
 检查是否所有已注册的dbclient都完成加载。
template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
ndbclient< ENUM, TDATA, TACTOR > * data (bool aloadfinish)
 从"加载中"或"已加载"映射中检索类型化的dbclient。
void save ()
 刷新更新、刷新删除,并将已加载数据镜像到脚本运行时。
void del ()
 删除所有客户端的待删除数据。
void nscript_push_data ()
 将所有已加载数据推送到脚本运行时。

Detailed Description

数据库客户端管理器,协调多个ndbclient实例的加载、保存和生命周期管理。

该类作为Actor与多个数据库客户端之间的中介,管理:

  • 客户端注册和初始化
  • 加载进度跟踪(区分"加载中"和"已加载"状态)
  • 全部加载完成后的最终化回调
  • 批量保存、删除和脚本同步操作

Constructor & Destructor Documentation

◆ nmanage_dbclient()

ngl::nmanage_dbclient::nmanage_dbclient ( actor_base * aactor)
inlineexplicit

构造函数,绑定拥有者Actor。

Parameters
aactor拥有此管理器的Actor指针

Member Function Documentation

◆ add()

void ngl::nmanage_dbclient::add ( ndbclient_base * adbclient,
const nguid & aid )

添加一个数据库客户端并立即初始化其Actor绑定。

注册新的数据库客户端组件

Parameters
adbclient数据库客户端基类指针
aid目标Actor的全局唯一标识符

每个dbclient从"加载中"映射开始,就绪后迁移到稳定映射。

Parameters
adbclient数据库客户端基类指针
aid关联的Actor ID

◆ data()

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
ndbclient< ENUM, TDATA, TACTOR > * ngl::nmanage_dbclient::data ( bool aloadfinish)

从"加载中"或"已加载"映射中检索类型化的dbclient。

Template Parameters
ENUM数据库表枚举类型
TDATA数据类型
TACTORActor类型
Note
警告:TDATA 和 TACTOR 类型参数必须与存储的 ndbclient<ENUM, TDATA, TACTOR> 实例完全匹配,否则 static_cast 将导致未定义行为。
Parameters
aloadfinishtrue从已加载映射查找,false从加载中映射查找
Returns
ndbclient<ENUM, TDATA, TACTOR>* 类型化的数据库客户端指针,未找到返回nullptr

◆ init()

void ngl::nmanage_dbclient::init ( ndbclient_base * adbclient,
actor_base * aactor,
const nguid & aid )

针对拥有者Actor和目标GUID初始化一个具体的dbclient。

Parameters
adbclient数据库客户端基类指针
aactor拥有者Actor指针
aid目标Actor的全局唯一标识符

◆ isloadfinish()

bool ngl::nmanage_dbclient::isloadfinish ( ) const

检查是否所有已注册的dbclient都完成加载。

Returns
bool 全部加载完成返回true

◆ on_load_finish()

bool ngl::nmanage_dbclient::on_load_finish ( pbdb::ENUM_DB atype,
enum_dbstat astat )

提升已完成加载的数据库客户端,当所有客户端就绪时触发最终化钩子。

数据库表加载完成回调

Parameters
atype数据库表类型
astat加载结果状态
Returns
bool 如果所有客户端都已加载完成返回true

通知Actor具体表的加载进度,将已加载的客户端迁移到稳定映射, 全部完成后触发数据初始化、脚本同步和"所有DB就绪"信号。

Parameters
atype完成加载的数据库表类型
astat加载状态
Return values
true所有表加载完成
false仍有表未加载

◆ save()

void ngl::nmanage_dbclient::save ( )

刷新更新、刷新删除,并将已加载数据镜像到脚本运行时。

Note
遍历所有已加载的客户端执行保存操作

◆ set_loadfinish_function()

void ngl::nmanage_dbclient::set_loadfinish_function ( const std::function< void(pbdb::ENUM_DB, enum_dbstat)> & afun)

注册当一个数据库表加载完成时调用的Actor级回调。

Parameters
afun回调函数,参数为数据库类型和加载状态

The documentation for this class was generated from the following files: