|
ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
|
数据库客户端管理器,协调多个ndbclient实例的加载、保存和生命周期管理。 More...
#include <nmanage_dbclient.h>
Public Member Functions | |
| nmanage_dbclient (actor_base *aactor) | |
| 构造函数,绑定拥有者Actor。 | |
| nmanage_dbclient (const nmanage_dbclient &)=delete | |
| nmanage_dbclient & | operator= (const nmanage_dbclient &)=delete |
| nmanage_dbclient (nmanage_dbclient &&)=delete | |
| nmanage_dbclient & | operator= (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 () |
| 将所有已加载数据推送到脚本运行时。 | |
数据库客户端管理器,协调多个ndbclient实例的加载、保存和生命周期管理。
该类作为Actor与多个数据库客户端之间的中介,管理:
|
inlineexplicit |
构造函数,绑定拥有者Actor。
| aactor | 拥有此管理器的Actor指针 |
| void ngl::nmanage_dbclient::add | ( | ndbclient_base * | adbclient, |
| const nguid & | aid ) |
添加一个数据库客户端并立即初始化其Actor绑定。
注册新的数据库客户端组件
| adbclient | 数据库客户端基类指针 |
| aid | 目标Actor的全局唯一标识符 |
每个dbclient从"加载中"映射开始,就绪后迁移到稳定映射。
| adbclient | 数据库客户端基类指针 |
| aid | 关联的Actor ID |
| ndbclient< ENUM, TDATA, TACTOR > * ngl::nmanage_dbclient::data | ( | bool | aloadfinish | ) |
从"加载中"或"已加载"映射中检索类型化的dbclient。
| ENUM | 数据库表枚举类型 |
| TDATA | 数据类型 |
| TACTOR | Actor类型 |
| aloadfinish | true从已加载映射查找,false从加载中映射查找 |
| void ngl::nmanage_dbclient::init | ( | ndbclient_base * | adbclient, |
| actor_base * | aactor, | ||
| const nguid & | aid ) |
针对拥有者Actor和目标GUID初始化一个具体的dbclient。
| adbclient | 数据库客户端基类指针 |
| aactor | 拥有者Actor指针 |
| aid | 目标Actor的全局唯一标识符 |
| bool ngl::nmanage_dbclient::isloadfinish | ( | ) | const |
检查是否所有已注册的dbclient都完成加载。
| bool ngl::nmanage_dbclient::on_load_finish | ( | pbdb::ENUM_DB | atype, |
| enum_dbstat | astat ) |
提升已完成加载的数据库客户端,当所有客户端就绪时触发最终化钩子。
数据库表加载完成回调
| atype | 数据库表类型 |
| astat | 加载结果状态 |
通知Actor具体表的加载进度,将已加载的客户端迁移到稳定映射, 全部完成后触发数据初始化、脚本同步和"所有DB就绪"信号。
| atype | 完成加载的数据库表类型 |
| astat | 加载状态 |
| true | 所有表加载完成 |
| false | 仍有表未加载 |
| void ngl::nmanage_dbclient::save | ( | ) |
刷新更新、刷新删除,并将已加载数据镜像到脚本运行时。
| void ngl::nmanage_dbclient::set_loadfinish_function | ( | const std::function< void(pbdb::ENUM_DB, enum_dbstat)> & | afun | ) |
注册当一个数据库表加载完成时调用的Actor级回调。
| afun | 回调函数,参数为数据库类型和加载状态 |