|
ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
|
消息处理函数元数据结构体。 More...
#include <nrfun.h>
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) |
| 插入或替换一个协议处理函数条目。 | |
消息处理函数元数据结构体。
包装类型擦除的处理函数实现。 类型擦除的处理函数实现。
消息分发注册表基类。
维护协议ID到处理函数的映射表。 提供消息分发、兜底处理等功能。
设计特点:
| bool ngl::nrfunbase::handle_switch | ( | actor_base * | aactor, |
| i32_threadid | athreadid, | ||
| handle_pram & | apram ) |
通过注册表分发一个排队中的handle_pram。
分发消息到注册的处理函数
| aactor | Actor基类指针 |
| athreadid | 线程ID |
| apram | 消息参数 |
按协议号查找处理函数并执行,非日志Actor会自动测量分发延迟。
| aactor | 目标Actor指针 |
| athreadid | 工作线程ID |
| apram | 消息处理参数 |
| true | 分发成功 |
| false | 未找到处理函数 |
|
inline |
直接分发共享指针消息。
| T | 消息类型 |
| aactor | Actor基类指针 |
| aparm | 消息共享指针 |
| void ngl::nrfunbase::notfindfun | ( | i32_threadid | athreadid, |
| handle_pram & | apram ) const |
调用未知协议的兜底处理函数。
处理未注册协议的兜底调用
| aactor | Actor基类指针 |
| athreadid | 线程ID |
| apram | 消息参数 |
当消息的协议号未找到对应处理函数时,调用此函数。
| aactor | 目标Actor指针(当前实现未使用,保留用于未来扩展) |
| athreadid | 工作线程ID |
| apram | 消息处理参数 |
|
protected |
插入或替换一个协议处理函数条目。
| aprotocol | 协议ID |
| afun | 处理函数 |
| nrfunbase & ngl::nrfunbase::set_notfindfun | ( | const tnotfindfun & | afun | ) |
注册当无协议处理函数匹配时使用的兜底函数。
设置未找到协议处理函数时的兜底回调
| afun | 兜底处理函数 |
| afun | 兜底回调函数 |