ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
ngl::ndb_modular< ENUM, TDATA, TACTOR > Class Template Referenceabstract

模板化的数据库模块类。 More...

#include <ndb_modular.h>

Inheritance diagram for ngl::ndb_modular< ENUM, TDATA, TACTOR >:
ngl::ndb_component

Public Member Functions

ndbclient< ENUM, TDATA, TACTOR > * dbclient ()
 返回类型化的数据库客户端指针。
void foreach (const std::function< void(const data_modified< TDATA > &)> &afun)
 遍历此模块拥有的每个已加载行。
data_modified< TDATA > * find (const std::function< bool(const data_modified< TDATA > &)> &afun)
 查找第一个匹配自定义谓词的行。
std::map< nguid, data_modified< TDATA > > & data ()
 将完整的已加载数据集作为映射暴露。
const std::map< nguid, data_modified< TDATA > > & data () const
 将完整的已加载数据集作为只读映射暴露。
std::map< nguid, data_modified< TDATA > > & foreach_data ()
 返回用于遍历的数据映射。
data_modified< TDATA > & get ()
 返回绑定到拥有者Actor ID的行。
data_modified< TDATA > * find (nguid aid)
 通过Actor GUID查找特定行。
data_modified< TDATA > & get (nguid aid)
 按Actor GUID获取或惰性创建一行。
void erase (nguid aid)
 标记一行待删除。
data_modified< TDATA > * db ()
 当此模块绑定到单个Actor ID时返回主行。
TACTOR * nactor ()
 类型化访问拥有者Actor。
void clear ()
 删除此模块当前跟踪的所有行。
void init_data () final
 从ndb_component到派生initdata()实现的适配钩子。
virtual void initdata ()=0
 子类必须实现的数据初始化钩子。
ndbclient< ENUM, TDATA, TACTOR > * get_actor_dbclient ()
 返回类型化的数据库客户端指针。
data_modified< TDATA > & add (i64_actorid aid, const TDATA &adbtab)
 添加或更新一行数据。
void remove (i64_actorid aid)
 删除指定ID的数据行。
Public Member Functions inherited from ngl::ndb_component
virtual ~ndb_component ()=default
 虚析构函数。
void set (actor_base *aactor)
 将此组件附加到其宿主Actor并注册数据库生命周期回调。
actor_baseget_actor ()
 返回宿主Actor。
i64_actorid get_actorid () const
 返回当前与此组件关联的Actor ID。
pbdb::ENUM_DB type () const
 返回此组件服务的数据库枚举。
actor_baseactorbase ()
 get_actor()的便捷别名。
void set_actorid (i64_actorid aactorid)
 覆盖用作数据库查找键的Actor ID。
virtual void related_actorid ()
 默认Actor ID绑定:使用拥有者Actor的GUID。
void init ()
 完成Actor/dbclient绑定并将dbclient注册到actor_base。
void create ()
 为当前Actor ID创建初始数据库记录。
void create (const nguid &aid)
 为指定Actor ID创建初始数据库记录。
ndbclient_basedbclientbase ()
 返回原始dbclient指针。

Protected Member Functions

 ndb_modular ()
 构造函数,初始化数据库组件。
virtual ~ndb_modular ()=default
 虚析构函数。
Protected Member Functions inherited from ngl::ndb_component
 ndb_component (pbdb::ENUM_DB aenum)
 构造函数,指定数据库类型。
void set_dbclient (ndbclient_base *andbclient)
 绑定此组件使用的具体dbclient。
ndbclient_baseget_dbclient ()
 访问已绑定的dbclient,不改变所有权。

Detailed Description

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
class ngl::ndb_modular< ENUM, TDATA, TACTOR >

模板化的数据库模块类。

为特定数据类型提供类型安全的数据库操作。 继承自ndb_component,提供具体的数据操作方法。

Template Parameters
ENUM数据库枚举标识符
TDATA数据行类型
TACTOR拥有者Actor类型

Member Function Documentation

◆ add()

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
data_modified< TDATA > & ngl::ndb_modular< ENUM, TDATA, TACTOR >::add ( i64_actorid aid,
const TDATA & adbtab )
inline

添加或更新一行数据。

Parameters
aidActor ID
adbtab数据内容
Returns
数据行引用

◆ data() [1/2]

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
std::map< nguid, data_modified< TDATA > > & ngl::ndb_modular< ENUM, TDATA, TACTOR >::data ( )
inline

将完整的已加载数据集作为映射暴露。

Returns
数据映射引用

◆ data() [2/2]

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
const std::map< nguid, data_modified< TDATA > > & ngl::ndb_modular< ENUM, TDATA, TACTOR >::data ( ) const
inline

将完整的已加载数据集作为只读映射暴露。

Returns
数据映射常量引用

◆ db()

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
data_modified< TDATA > * ngl::ndb_modular< ENUM, TDATA, TACTOR >::db ( )
inline

当此模块绑定到单个Actor ID时返回主行。

Returns
数据行指针

◆ dbclient()

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
ndbclient< ENUM, TDATA, TACTOR > * ngl::ndb_modular< ENUM, TDATA, TACTOR >::dbclient ( )
inline

返回类型化的数据库客户端指针。

Returns
数据库客户端指针

◆ erase()

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
void ngl::ndb_modular< ENUM, TDATA, TACTOR >::erase ( nguid aid)
inline

标记一行待删除。

Parameters
aidActor GUID

◆ find() [1/2]

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
data_modified< TDATA > * ngl::ndb_modular< ENUM, TDATA, TACTOR >::find ( const std::function< bool(const data_modified< TDATA > &)> & afun)
inline

查找第一个匹配自定义谓词的行。

Parameters
afun谓词函数,返回true表示匹配
Returns
匹配的行指针,未找到返回nullptr

◆ find() [2/2]

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
data_modified< TDATA > * ngl::ndb_modular< ENUM, TDATA, TACTOR >::find ( nguid aid)
inline

通过Actor GUID查找特定行。

Parameters
aidActor GUID
Returns
数据行指针,未找到返回nullptr

◆ foreach()

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
void ngl::ndb_modular< ENUM, TDATA, TACTOR >::foreach ( const std::function< void(const data_modified< TDATA > &)> & afun)
inline

遍历此模块拥有的每个已加载行。

Parameters
afun遍历函数,接收每行的常量引用

◆ foreach_data()

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
std::map< nguid, data_modified< TDATA > > & ngl::ndb_modular< ENUM, TDATA, TACTOR >::foreach_data ( )
inline

返回用于遍历的数据映射。

Returns
数据映射引用

◆ get() [1/2]

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
data_modified< TDATA > & ngl::ndb_modular< ENUM, TDATA, TACTOR >::get ( )
inline

返回绑定到拥有者Actor ID的行。

Returns
数据行引用

◆ get() [2/2]

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
data_modified< TDATA > & ngl::ndb_modular< ENUM, TDATA, TACTOR >::get ( nguid aid)
inline

按Actor GUID获取或惰性创建一行。

Parameters
aidActor GUID
Returns
数据行引用

◆ get_actor_dbclient()

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
ndbclient< ENUM, TDATA, TACTOR > * ngl::ndb_modular< ENUM, TDATA, TACTOR >::get_actor_dbclient ( )
inline

返回类型化的数据库客户端指针。

Returns
数据库客户端指针

◆ init_data()

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
void ngl::ndb_modular< ENUM, TDATA, TACTOR >::init_data ( )
finalvirtual

从ndb_component到派生initdata()实现的适配钩子。

Reimplemented from ngl::ndb_component.

◆ initdata()

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
virtual void ngl::ndb_modular< ENUM, TDATA, TACTOR >::initdata ( )
pure virtual

子类必须实现的数据初始化钩子。

在数据库加载完成后调用,用于执行特定于Actor的数据初始化。

◆ nactor()

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
TACTOR * ngl::ndb_modular< ENUM, TDATA, TACTOR >::nactor ( )
inline

类型化访问拥有者Actor。

Returns
拥有者Actor指针

◆ remove()

template<pbdb::ENUM_DB ENUM, typename TDATA, typename TACTOR>
void ngl::ndb_modular< ENUM, TDATA, TACTOR >::remove ( i64_actorid aid)
inline

删除指定ID的数据行。

Parameters
aidActor ID

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