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

数据库组件基类。 More...

#include <ndb_modular.h>

Inheritance diagram for ngl::ndb_component:
ngl::ndb_modular< TDBTAB_TYPE, TDBTAB, TACTOR > ngl::ndb_modular< ENUMDB, T, TDerived > ngl::ndb_modular< ENUM, TDATA, TACTOR >

Public Member Functions

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指针。
virtual void init_data ()
 所有数据库表加载完成后的钩子。

Protected Member Functions

 ndb_component (pbdb::ENUM_DB aenum)
 构造函数,指定数据库类型。
void set_dbclient (ndbclient_base *andbclient)
 绑定此组件使用的具体dbclient。
ndbclient_baseget_dbclient ()
 访问已绑定的dbclient,不改变所有权。

Detailed Description

数据库组件基类。

为Actor提供数据库持久化能力的基础组件。 管理数据库客户端的生命周期和Actor绑定。

设计特点:

  • 不可拷贝,不可默认构造
  • 通过set()方法绑定到宿主Actor
  • 支持多种数据库后端(MySQL、PostgreSQL、Redis等)
  • 提供统一的数据库操作接口

Constructor & Destructor Documentation

◆ ndb_component()

ngl::ndb_component::ndb_component ( pbdb::ENUM_DB aenum)
explicitprotected

构造函数,指定数据库类型。

构造数据库组件

Parameters
aenum数据库枚举类型
aenum数据库表类型枚举

Member Function Documentation

◆ actorbase()

actor_base * ngl::ndb_component::actorbase ( )

get_actor()的便捷别名。

Returns
宿主Actor指针

◆ create() [1/2]

void ngl::ndb_component::create ( )

为当前Actor ID创建初始数据库记录。

使用当前绑定的Actor ID创建数据库记录

◆ create() [2/2]

void ngl::ndb_component::create ( const nguid & aid)

为指定Actor ID创建初始数据库记录。

Parameters
aidActor GUID

◆ dbclientbase()

ndbclient_base * ngl::ndb_component::dbclientbase ( )

返回原始dbclient指针。

Returns
数据库客户端基类指针

◆ get_actor()

actor_base * ngl::ndb_component::get_actor ( )

返回宿主Actor。

Returns
宿主Actor指针

◆ get_actorid()

i64_actorid ngl::ndb_component::get_actorid ( ) const

返回当前与此组件关联的Actor ID。

Returns
Actor ID

◆ get_dbclient()

ndbclient_base * ngl::ndb_component::get_dbclient ( )
protected

访问已绑定的dbclient,不改变所有权。

Returns
数据库客户端指针

◆ init()

void ngl::ndb_component::init ( )

完成Actor/dbclient绑定并将dbclient注册到actor_base。

初始化组件

关联Actor ID并将dbclient注册到Actor的数据库管理器中。

◆ init_data()

void ngl::ndb_component::init_data ( )
virtual

所有数据库表加载完成后的钩子。

子类可以重写此方法,在数据库加载完成后执行初始化逻辑。

Reimplemented in ngl::ndb_modular< ENUM, TDATA, TACTOR >, ngl::ndb_modular< ENUMDB, T, TDerived >, and ngl::ndb_modular< TDBTAB_TYPE, TDBTAB, TACTOR >.

◆ related_actorid()

void ngl::ndb_component::related_actorid ( )
virtual

默认Actor ID绑定:使用拥有者Actor的GUID。

Note
当 m_actor 为空时,记录错误并返回。

◆ set()

void ngl::ndb_component::set ( actor_base * aactor)

将此组件附加到其宿主Actor并注册数据库生命周期回调。

将组件绑定到Actor

Parameters
aactor宿主Actor指针

同时将自身注册为Actor的DB组件。

Parameters
aactor目标Actor指针

◆ set_actorid()

void ngl::ndb_component::set_actorid ( i64_actorid aactorid)

覆盖用作数据库查找键的Actor ID。

Parameters
aactorid新的Actor ID

◆ set_dbclient()

void ngl::ndb_component::set_dbclient ( ndbclient_base * andbclient)
protected

绑定此组件使用的具体dbclient。

Parameters
andbclient数据库客户端指针

◆ type()

pbdb::ENUM_DB ngl::ndb_component::type ( ) const

返回此组件服务的数据库枚举。

Returns
数据库枚举类型

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