|
ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
|
NSP读端模板类,用于订阅和接收来自NSP服务器的远程数据同步。 More...
#include <nsp_read.h>
Public Types | |
| using | tnsp_read = nsp_read<TDerived, TACTOR, T> |
| 本类型的别名,简化内部引用。 | |
Public Member Functions | |
| void | set_changedatafun (const std::function< void(int64_t, const T &, bool)> &afun) |
| 注册数据变更回调。 | |
| void | set_deldatafun (const std::function< void(int64_t)> &afun) |
| 注册数据删除回调。 | |
| void | set_loadfinishfun (const std::function< void()> &afun) |
| 注册首次全量同步完成回调。 | |
| void | init () |
| 向目标NSP服务器启动注册定时器,周期性发送注册请求直到成功。 | |
| void | exit () |
| 从NSP服务器注销并销毁每个Actor的单例。 | |
| const T * | getconst (i64_dataid adataid) |
| 读取一个镜像行。 | |
| const std::map< i64_actorid, T > & | get_mapconst () |
| 获取完整的镜像映射。 | |
| void | handle (TDerived *aactor, const message< np_channel_data< T > > &adata) |
| 处理初始/增量数据同步消息。 | |
| void | handle (TDerived *aactor, const message< np_channel_check< T > > &adata) |
| 处理注册检查消息(心跳),若未注册则发送注册请求。 | |
| void | handle (TDerived *aactor, const message< np_channel_register_reply< T > > &adata) |
| 处理注册回复消息,更新对等节点列表和字段权限。 | |
| void | handle (TDerived *aactor, const message< np_channel_dataid_sync< T > > &adata) |
| 处理数据ID同步消息,更新对等节点的字段权限。 | |
Static Public Member Functions | |
| static nsp_read< TDerived, TACTOR, T > & | instance (i64_actorid aactorid) |
| 获取每个Actor的读端单例。 | |
| static nsp_read< TDerived, TACTOR, T > & | instance_readall (TDerived *aactor, const std::set< i32_fieldnumber > &afieldnumbers) |
| 创建订阅所有行的读端。 | |
| static nsp_read< TDerived, TACTOR, T > & | instance_readpart (TDerived *aactor, const std::set< i32_fieldnumber > &afieldnumbers, const std::set< i64_actorid > &aids) |
| 创建仅订阅选定行的读端。 | |
| static i64_actorid | to_actorid (i64_actorid adataid) |
| 将行ID重新标记为底层NSP服务器使用的拥有者Actor类型。 | |
NSP读端模板类,用于订阅和接收来自NSP服务器的远程数据同步。
提供只读数据订阅功能,支持全量订阅和部分行订阅两种模式。 内部维护一份本地数据镜像,通过字段权限控制只同步允许的protobuf字段。 支持变更回调、删除回调和首次同步完成回调三种事件通知。
| TDerived | 派生Actor类型 |
| TACTOR | 数据拥有者Actor类型(用于确定NSP服务器ID) |
| T | 数据行的protobuf消息类型 |
| void ngl::nsp_read< TDerived, TACTOR, T >::exit | ( | ) |
从NSP服务器注销并销毁每个Actor的单例。
退出读端:清除定时器,向所有相关节点发送退出通知,并销毁单例。
| const std::map< i64_actorid, T > & ngl::nsp_read< TDerived, TACTOR, T >::get_mapconst | ( | ) |
获取完整的镜像映射。
获取完整的镜像映射。
| const T * ngl::nsp_read< TDerived, TACTOR, T >::getconst | ( | i64_dataid | adataid | ) |
读取一个镜像行。
读取一个镜像行。
| adataid | 行数据ID |
| adataid | 行数据ID |
| void ngl::nsp_read< TDerived, TACTOR, T >::handle | ( | TDerived * | aactor, |
| const message< np_channel_check< T > > & | adata ) |
处理注册检查消息(心跳),若未注册则发送注册请求。
处理注册检查消息(心跳)。
| aactor | 目标Actor指针 |
| adata | 检查消息 |
若已注册则清除定时器;否则构造注册请求消息,包含订阅范围和字段权限, 发送给NSP服务器以请求注册。
| void ngl::nsp_read< TDerived, TACTOR, T >::handle | ( | TDerived * | aactor, |
| const message< np_channel_data< T > > & | adata ) |
处理初始/增量数据同步消息。
| aactor | 目标Actor指针 |
| adata | 数据同步消息 |
首次同步时直接对齐到读端字段布局;增量更新时按源/目标类型重新映射字段。 同时处理新增/更新行和删除行,触发相应的用户回调。 首次同步完成时标记加载状态并触发loadfinishfun回调。
| void ngl::nsp_read< TDerived, TACTOR, T >::handle | ( | TDerived * | aactor, |
| const message< np_channel_dataid_sync< T > > & | adata ) |
处理数据ID同步消息,更新对等节点的字段权限。
处理数据ID同步消息。
| aactor | 目标Actor指针 |
| adata | 数据ID同步消息 |
随着新对等节点类型加入通道,更新字段权限映射表和退出通知集合。
| void ngl::nsp_read< TDerived, TACTOR, T >::handle | ( | TDerived * | aactor, |
| const message< np_channel_register_reply< T > > & | adata ) |
处理注册回复消息,更新对等节点列表和字段权限。
处理注册回复消息。
| aactor | 目标Actor指针 |
| adata | 注册回复消息 |
标记为已注册,清除定时器,更新字段权限,并记录所有需要接收退出通知的对等节点。
| void ngl::nsp_read< TDerived, TACTOR, T >::init | ( | ) |
向目标NSP服务器启动注册定时器,周期性发送注册请求直到成功。
初始化读端:构建NSP服务器ID,注册消息处理器,启动注册重试定时器。
|
static |
|
static |
|
static |
| void ngl::nsp_read< TDerived, TACTOR, T >::set_changedatafun | ( | const std::function< void(int64_t, const T &, bool)> & | afun | ) |
注册数据变更回调。
注册数据变更回调。
| afun | 回调函数,签名为void(int64_t行ID, const T&行数据, bool是否首次同步) |
| afun | 回调函数,签名为void(int64_t行ID, const T&行数据, bool是否首次同步) |
| void ngl::nsp_read< TDerived, TACTOR, T >::set_deldatafun | ( | const std::function< void(int64_t)> & | afun | ) |
注册数据删除回调。
注册数据删除回调。
| afun | 回调函数,签名为void(int64_t行ID) |
| afun | 回调函数,签名为void(int64_t行ID) |
| void ngl::nsp_read< TDerived, TACTOR, T >::set_loadfinishfun | ( | const std::function< void()> & | afun | ) |
注册首次全量同步完成回调。
注册首次全量同步完成回调。
| afun | 回调函数,签名为void() |
| afun | 回调函数,签名为void() |
|
static |
将行ID重新标记为底层NSP服务器使用的拥有者Actor类型。
将行ID重新标记为底层NSP服务器使用的拥有者Actor类型。
| adataid | 原始数据ID |
| adataid | 原始数据ID |