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

消息处理函数元数据结构体。 More...

#include <nrfun.h>

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

Public Member Functions

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)
 直接分发共享指针消息。

Protected Member Functions

void register_logic (i32_protocolnum aprotocol, const tlogicfun &afun)
 插入或替换一个协议处理函数条目。

Detailed Description

消息处理函数元数据结构体。

包装类型擦除的处理函数实现。 类型擦除的处理函数实现。

消息分发注册表基类。

维护协议ID到处理函数的映射表。 提供消息分发、兜底处理等功能。

设计特点:

  • 使用unordered_map实现O(1)查找
  • 支持可选的兜底处理函数
  • 线程安全的注册和分发

Member Function Documentation

◆ handle_switch() [1/2]

bool ngl::nrfunbase::handle_switch ( actor_base * aactor,
i32_threadid athreadid,
handle_pram & apram )

通过注册表分发一个排队中的handle_pram。

分发消息到注册的处理函数

Parameters
aactorActor基类指针
athreadid线程ID
apram消息参数
Returns
分发成功返回true,未找到处理函数返回false

按协议号查找处理函数并执行,非日志Actor会自动测量分发延迟。

Parameters
aactor目标Actor指针
athreadid工作线程ID
apram消息处理参数
Return values
true分发成功
false未找到处理函数

◆ handle_switch() [2/2]

template<typename T>
bool ngl::nrfunbase::handle_switch ( actor_base * aactor,
std::shared_ptr< T > & aparm )
inline

直接分发共享指针消息。

Template Parameters
T消息类型
Parameters
aactorActor基类指针
aparm消息共享指针
Returns
分发成功返回true,未找到处理函数返回false

◆ notfindfun()

void ngl::nrfunbase::notfindfun ( i32_threadid athreadid,
handle_pram & apram ) const

调用未知协议的兜底处理函数。

处理未注册协议的兜底调用

Parameters
aactorActor基类指针
athreadid线程ID
apram消息参数

当消息的协议号未找到对应处理函数时,调用此函数。

Parameters
aactor目标Actor指针(当前实现未使用,保留用于未来扩展)
athreadid工作线程ID
apram消息处理参数

◆ register_logic()

void ngl::nrfunbase::register_logic ( i32_protocolnum aprotocol,
const tlogicfun & afun )
protected

插入或替换一个协议处理函数条目。

Parameters
aprotocol协议ID
afun处理函数

◆ set_notfindfun()

nrfunbase & ngl::nrfunbase::set_notfindfun ( const tnotfindfun & afun)

注册当无协议处理函数匹配时使用的兜底函数。

设置未找到协议处理函数时的兜底回调

Parameters
afun兜底处理函数
Returns
返回自身引用,支持链式调用
Parameters
afun兜底回调函数
Returns
自身引用,支持链式调用

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