ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
ngl::nrfun< TDerived > Class Template Reference

消息分发注册表模板类。 More...

#include <nrfun.h>

Inheritance diagram for ngl::nrfun< TDerived >:
ngl::nrfunbase

Public Member Functions

template<typename TTTDerived, typename T>
nrfun< TDerived > & rfun (const std::function< void(TTTDerived *, message< T > &)> &afun)
 注册基于std::function的类型化Actor消息处理函数。
template<typename TTTDerived, typename T>
nrfun< TDerived > & rfun_nonet (const Tfun< TTTDerived, T > afun)
 注册仅本地使用的处理函数,跳过协议注册表元数据。
template<typename TTTDerived, typename T>
nrfun< TDerived > & rfun (const Tfun< TTTDerived, T > afun)
 注册受就绪掩码控制的成员函数处理函数。
template<typename TTTDerived, typename T>
nrfun< TDerived > & rfun (const Tfun< TTTDerived, T > afun, ENUM_ACTOR atype)
 注册处理函数,但将协议与显式Actor类型关联。
template<typename T>
nrfun< TDerived > & rfun_c2g (const Tfun< TDerived, np_actor_forward< T, forward_c2g< forward > > > afun)
 注册用于客户端到网关转发的协议处理函数。
template<typename T>
nrfun< TDerived > & rfun_g2c (const Tfun< TDerived, np_actor_forward< T, forward_g2c< forward > > > afun)
 注册用于网关到客户端转发的协议处理函数。
Public Member Functions inherited from ngl::nrfunbase
nrfunbase & set_notfindfun (const tnotfindfun &afun)
 注册当无协议处理函数匹配时使用的兜底函数。
void notfindfun (i32_threadid athreadid, handle_pram &apram) const
 调用未知协议的兜底处理函数。
bool handle_switch (actor_base *aactor, i32_threadid athreadid, handle_pram &apram)
 通过注册表分发一个排队中的handle_pram。
template<typename T>
bool handle_switch (actor_base *aactor, std::shared_ptr< T > &aparm)
 直接分发共享指针消息。

Static Public Member Functions

static nrfun< TDerived > & instance ()
 获取单例实例。
template<typename TTTDerived, typename T>
static nrfun & rfun (const std::function< void(TTTDerived *, message< T > &)> &afun)
 注册基于std::function的类型化Actor消息处理函数。
template<typename TTTDerived, typename T>
static nrfun & rfun (const Tfun< TTTDerived, T > afun)
 注册受就绪掩码控制的成员函数处理函数。
template<typename TTTDerived, typename T>
static nrfun & rfun (const Tfun< TTTDerived, T > afun, ENUM_ACTOR atype)
 注册处理函数,但将协议与显式Actor类型关联。
template<typename TTTDerived, typename T>
static nrfun & rfun_nonet (const Tfun< TTTDerived, T > afun)
 注册仅本地使用的处理函数,跳过协议注册表元数据。
template<typename T>
static nrfun & rfun_c2g (const Tfun< TDerived, np_actor_forward< T, forward_c2g< forward > > > afun)
 注册用于客户端到网关转发的协议处理函数。
template<typename T>
static nrfun & rfun_g2c (const Tfun< TDerived, np_actor_forward< T, forward_g2c< forward > > > afun)
 注册用于网关到客户端转发的协议处理函数。

Additional Inherited Members

Protected Member Functions inherited from ngl::nrfunbase
void register_logic (i32_protocolnum aprotocol, const tlogicfun &afun)
 插入或替换一个协议处理函数条目。

Detailed Description

template<typename TDerived>
class ngl::nrfun< TDerived >

消息分发注册表模板类。

为特定Actor类型提供消息分发注册功能。 支持多种注册方式,包括std::function、成员函数、转发协议等。

Template Parameters
TDerived派生Actor类型

Member Function Documentation

◆ instance()

template<typename TDerived>
nrfun< TDerived > & ngl::nrfun< TDerived >::instance ( )
inlinestatic

获取单例实例。

Returns
nrfun单例引用

◆ rfun() [1/6]

template<typename TDerived>
template<typename TTTDerived, typename T>
nrfun< TDerived > & ngl::nrfun< TDerived >::rfun ( const std::function< void(TTTDerived *, message< T > &)> & afun)

注册基于std::function的类型化Actor消息处理函数。

Template Parameters
TTTDerived实际Actor类型
T消息类型
Parameters
afun处理函数
Returns
返回自身引用,支持链式调用

注册基于std::function的类型化Actor消息处理函数。

实现细节:

  1. 创建类型擦除的lambda包装器
  2. 在lambda内构造强类型message并调用用户函数
  3. 如果Actor状态就绪,调用handle_after后处理钩子
  4. 注册协议元数据用于反射/路由
Template Parameters
TDerived派生Actor类型
TTTDerived实际Actor类型
T消息类型
Parameters
afun处理函数
Returns
返回自身引用,支持链式调用

基于shared_ptr的消息可以直接安全地传递给上层处理器。

后处理钩子仅在依赖数据库的状态就绪后运行。

注册元数据用于协议反射/路由层。

◆ rfun() [2/6]

template<typename TDerived>
template<typename TTTDerived, typename T>
nrfun & ngl::nrfun< TDerived >::rfun ( const std::function< void(TTTDerived *, message< T > &)> & afun)
static

注册基于std::function的类型化Actor消息处理函数。

Template Parameters
TTTDerived实际Actor类型
T消息类型
Parameters
afun处理函数
Returns
返回自身引用,支持链式调用

◆ rfun() [3/6]

template<typename TDerived>
template<typename TTTDerived, typename T>
nrfun< TDerived > & ngl::nrfun< TDerived >::rfun ( const Tfun< TTTDerived, T > afun)

注册受就绪掩码控制的成员函数处理函数。

Template Parameters
TTTDerived实际Actor类型
T消息类型
Parameters
afun成员函数指针
Returns
返回自身引用,支持链式调用

注册受就绪掩码控制的成员函数处理函数。

委托给带有显式Actor类型的重载版本。

Template Parameters
TDerived派生Actor类型
TTTDerived实际Actor类型
T消息类型
Parameters
afun成员函数指针
Returns
返回自身引用,支持链式调用

◆ rfun() [4/6]

template<typename TDerived>
template<typename TTTDerived, typename T>
nrfun & ngl::nrfun< TDerived >::rfun ( const Tfun< TTTDerived, T > afun)
static

注册受就绪掩码控制的成员函数处理函数。

Template Parameters
TTTDerived实际Actor类型
T消息类型
Parameters
afun成员函数指针
Returns
返回自身引用,支持链式调用

◆ rfun() [5/6]

template<typename TDerived>
template<typename TTTDerived, typename T>
nrfun< TDerived > & ngl::nrfun< TDerived >::rfun ( const Tfun< TTTDerived, T > afun,
ENUM_ACTOR atype )

注册处理函数,但将协议与显式Actor类型关联。

Template Parameters
TTTDerived实际Actor类型
T消息类型
Parameters
afun成员函数指针
atypeActor类型枚举
Returns
返回自身引用,支持链式调用

注册处理函数,但将协议与显式Actor类型关联。

实现细节:

  1. 调用rfun_nonet注册本地处理函数
  2. 注册协议元数据与指定Actor类型的关联
Template Parameters
TDerived派生Actor类型
TTTDerived实际Actor类型
T消息类型
Parameters
afun成员函数指针
atypeActor类型枚举
Returns
返回自身引用,支持链式调用

◆ rfun() [6/6]

template<typename TDerived>
template<typename TTTDerived, typename T>
nrfun & ngl::nrfun< TDerived >::rfun ( const Tfun< TTTDerived, T > afun,
ENUM_ACTOR atype )
static

注册处理函数,但将协议与显式Actor类型关联。

Template Parameters
TTTDerived实际Actor类型
T消息类型
Parameters
afun成员函数指针
atypeActor类型枚举
Returns
返回自身引用,支持链式调用

◆ rfun_c2g() [1/2]

template<typename TDerived>
template<typename T>
nrfun< TDerived > & ngl::nrfun< TDerived >::rfun_c2g ( const Tfun< TDerived, np_actor_forward< T, forward_c2g< forward > > > afun)

注册用于客户端到网关转发的协议处理函数。

Template Parameters
T消息类型
Parameters
afun成员函数指针
Returns
返回自身引用,支持链式调用

注册用于客户端到网关转发的协议处理函数。

实现细节:

  1. 创建类型擦除的lambda包装器
  2. 在lambda内直接使用原始指针(转发数据包已包含封装载荷)
  3. 注册C2G转发协议元数据
Template Parameters
TDerived派生Actor类型
T消息类型
Parameters
afun成员函数指针
Returns
返回自身引用,支持链式调用

转发数据包已包含封装的载荷,无需额外拷贝。

◆ rfun_c2g() [2/2]

template<typename TDerived>
template<typename T>
nrfun & ngl::nrfun< TDerived >::rfun_c2g ( const Tfun< TDerived, np_actor_forward< T, forward_c2g< forward > > > afun)
static

注册用于客户端到网关转发的协议处理函数。

Template Parameters
T消息类型
Parameters
afun成员函数指针
Returns
返回自身引用,支持链式调用

◆ rfun_g2c() [1/2]

template<typename TDerived>
template<typename T>
nrfun< TDerived > & ngl::nrfun< TDerived >::rfun_g2c ( const Tfun< TDerived, np_actor_forward< T, forward_g2c< forward > > > afun)

注册用于网关到客户端转发的协议处理函数。

Template Parameters
T消息类型
Parameters
afun成员函数指针
Returns
返回自身引用,支持链式调用

注册用于网关到客户端转发的协议处理函数。

实现细节:

  1. 创建类型擦除的lambda包装器
  2. 在lambda内直接使用原始指针(转发数据包已包含封装载荷)
  3. 注册G2C转发协议元数据
Template Parameters
TDerived派生Actor类型
T消息类型
Parameters
afun成员函数指针
Returns
返回自身引用,支持链式调用

转发数据包已包含封装的载荷,无需额外拷贝。

◆ rfun_g2c() [2/2]

template<typename TDerived>
template<typename T>
nrfun & ngl::nrfun< TDerived >::rfun_g2c ( const Tfun< TDerived, np_actor_forward< T, forward_g2c< forward > > > afun)
static

注册用于网关到客户端转发的协议处理函数。

Template Parameters
T消息类型
Parameters
afun成员函数指针
Returns
返回自身引用,支持链式调用

◆ rfun_nonet() [1/2]

template<typename TDerived>
template<typename TTTDerived, typename T>
nrfun< TDerived > & ngl::nrfun< TDerived >::rfun_nonet ( const Tfun< TTTDerived, T > afun)

注册仅本地使用的处理函数,跳过协议注册表元数据。

Template Parameters
TTTDerived实际Actor类型
T消息类型
Parameters
afun成员函数指针
Returns
返回自身引用,支持链式调用

注册仅本地使用的处理函数,跳过协议注册表元数据。

实现细节:

  1. 创建类型擦除的lambda包装器
  2. 在lambda内构造强类型message并调用成员函数
  3. 如果Actor状态就绪,调用handle_after后处理钩子
  4. 不注册协议元数据(仅本地使用)
Template Parameters
TDerived派生Actor类型
TTTDerived实际Actor类型
T消息类型
Parameters
afun成员函数指针
Returns
返回自身引用,支持链式调用

非网络处理器仍然复用相同的消息封装和后处理流程。

◆ rfun_nonet() [2/2]

template<typename TDerived>
template<typename TTTDerived, typename T>
nrfun & ngl::nrfun< TDerived >::rfun_nonet ( const Tfun< TTTDerived, T > afun)
static

注册仅本地使用的处理函数,跳过协议注册表元数据。

Template Parameters
TTTDerived实际Actor类型
T消息类型
Parameters
afun成员函数指针
Returns
返回自身引用,支持链式调用

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