|
| 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) |
| | 注册用于网关到客户端转发的协议处理函数。
|
| 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 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) |
| | 注册用于网关到客户端转发的协议处理函数。
|
template<typename TDerived>
class ngl::nrfun< TDerived >
消息分发注册表模板类。
为特定Actor类型提供消息分发注册功能。 支持多种注册方式,包括std::function、成员函数、转发协议等。
- Template Parameters
-
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
-
- Returns
- 返回自身引用,支持链式调用
注册基于std::function的类型化Actor消息处理函数。
实现细节:
- 创建类型擦除的lambda包装器
- 在lambda内构造强类型message并调用用户函数
- 如果Actor状态就绪,调用handle_after后处理钩子
- 注册协议元数据用于反射/路由
- Template Parameters
-
| TDerived | 派生Actor类型 |
| TTTDerived | 实际Actor类型 |
| T | 消息类型 |
- Parameters
-
- Returns
- 返回自身引用,支持链式调用
基于shared_ptr的消息可以直接安全地传递给上层处理器。
后处理钩子仅在依赖数据库的状态就绪后运行。
注册元数据用于协议反射/路由层。