|
ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
|
NSP写端模板类,用于向NSP服务器发布本地数据变更并接收远程同步。 More...
#include <nsp_write.h>
Public Member Functions | |
| void | init () |
| 向目标NSP服务器启动注册定时器,周期性发送注册请求直到成功。 | |
| 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) |
| 注册首次全量同步完成回调。 | |
| T * | add (i64_dataid adataid) |
| 添加新行并标记为脏,用于下次增量广播。 | |
| T * | get (i64_dataid adataid) |
| 获取一行并标记为脏,用于下次增量广播。 | |
| bool | erase (i64_dataid adataid) |
| 删除一行并标记为脏,用于下次增量广播。 | |
| const T * | getconst (i64_dataid adataid) |
| 读取一行,不标记为脏。 | |
| const std::map< i64_actorid, T > & | get_mapconst () |
| 获取完整的镜像映射。 | |
| void | exit () |
| 从NSP服务器注销并销毁每个Actor的单例。 | |
| void | change () |
| 将累积的增量变更刷新到感兴趣的对等节点。 | |
| void | handle (TDerived *aactor, const message< np_channel_data< T > > &adata) |
| 处理初始/增量数据同步消息。 | |
| void | handle (TDerived *, const message< np_channel_check< T > > &adata) |
| 处理注册检查消息(心跳),若未注册则发送注册请求。 | |
| void | handle (TDerived *, const message< np_channel_register_reply< T > > &adata) |
| 处理注册回复消息,更新对等节点列表、订阅范围和字段权限。 | |
| void | handle (TDerived *, const message< np_channel_dataid_sync< T > > &adata) |
| 处理数据ID同步消息,根据新对等节点的订阅模式更新本地订阅缓存。 | |
| void | handle (TDerived *, const message< np_channel_exit< T > > &adata) |
| 处理对等节点退出消息,从本地订阅缓存中移除该节点。 | |
Static Public Member Functions | |
| static nsp_write< TDerived, TACTOR, T > & | instance (i64_actorid aactorid) |
| 获取每个Actor的写端单例。 | |
| static nsp_write< TDerived, TACTOR, T > & | instance_writeall (TDerived *aactor, const std::set< i32_fieldnumber > &areadfieldnumbers, const std::set< i32_fieldnumber > &awritefieldnumbers) |
| 创建镜像所有行且可写所有行的写端。 | |
| static nsp_write< TDerived, TACTOR, T > & | instance_writepart (TDerived *aactor, const std::set< i32_fieldnumber > &areadfieldnumbers, const std::set< i32_fieldnumber > &awritefieldnumbers, const std::set< i64_actorid > &areadids, const std::set< i64_actorid > &awriteids) |
| 创建具有显式读/写行和字段范围的写端。 | |
| static i64_actorid | to_actorid (i64_actorid adataid) |
| 将行ID重新标记为底层NSP服务器使用的拥有者Actor类型。 | |
| static void | change (i64_actorid aactorid) |
| 静态版本:按Actor ID查找写端实例并触发增量刷新。 | |
NSP写端模板类,用于向NSP服务器发布本地数据变更并接收远程同步。
同时承担读写职责:从服务器接收初始/增量同步数据,并将本地数据变更 广播到所有订阅了相关行的对等节点。支持全量和部分行两种订阅模式。 本地数据变更通过add()/get()/erase()标记为脏,在change()时批量刷新。
| TDerived | 派生Actor类型 |
| TACTOR | 数据拥有者Actor类型(用于确定NSP服务器ID) |
| T | 数据行的protobuf消息类型 |
| T * ngl::nsp_write< TDerived, TACTOR, T >::add | ( | i64_dataid | adataid | ) |
添加新行并标记为脏,用于下次增量广播。
添加新行并标记为脏,用于下次增量广播。
| adataid | 行数据ID |
| adataid | 行数据ID |
| void ngl::nsp_write< TDerived, TACTOR, T >::change | ( | ) |
将累积的增量变更刷新到感兴趣的对等节点。
将累积的增量变更刷新到所有感兴趣的对等节点。
分两阶段广播:
|
static |
静态版本:按Actor ID查找写端实例并触发增量刷新。
| aactorid | Actor全局唯一标识符 |
| aactorid | Actor全局唯一标识符 |
| bool ngl::nsp_write< TDerived, TACTOR, T >::erase | ( | i64_dataid | adataid | ) |
删除一行并标记为脏,用于下次增量广播。
删除一行并标记为脏,用于下次增量广播。
| adataid | 行数据ID |
| adataid | 行数据ID |
| void ngl::nsp_write< TDerived, TACTOR, T >::exit | ( | ) |
从NSP服务器注销并销毁每个Actor的单例。
退出写端:清除定时器,向相关节点发送同步通知和退出通知,并销毁单例。
| T * ngl::nsp_write< TDerived, TACTOR, T >::get | ( | i64_dataid | adataid | ) |
获取一行并标记为脏,用于下次增量广播。
获取一行并标记为脏,用于下次增量广播。
| adataid | 行数据ID |
| adataid | 行数据ID |
| const std::map< i64_actorid, T > & ngl::nsp_write< TDerived, TACTOR, T >::get_mapconst | ( | ) |
获取完整的镜像映射。
获取完整的镜像映射。
| const T * ngl::nsp_write< TDerived, TACTOR, T >::getconst | ( | i64_dataid | adataid | ) |
读取一行,不标记为脏。
读取一行,不标记为脏。
| adataid | 行数据ID |
| adataid | 行数据ID |
| void ngl::nsp_write< TDerived, TACTOR, T >::handle | ( | TDerived * | aactor, |
| const message< np_channel_check< T > > & | adata ) |
处理注册检查消息(心跳),若未注册则发送注册请求。
处理注册检查消息(心跳)。
| aactor | 目标Actor指针 |
| adata | 检查消息 |
若已注册则清除定时器;否则构造注册请求消息,包含订阅范围和字段权限, 发送给NSP服务器以请求注册。
| void ngl::nsp_write< TDerived, TACTOR, T >::handle | ( | TDerived * | aactor, |
| const message< np_channel_dataid_sync< T > > & | adata ) |
处理数据ID同步消息,根据新对等节点的订阅模式更新本地订阅缓存。
处理数据ID同步消息。
| aactor | 目标Actor指针 |
| adata | 数据ID同步消息 |
根据新对等节点的读/写和全量/部分订阅模式,更新本地订阅缓存 (m_nodereadalls、m_nodewritealls、m_othercare)和退出通知集合。
| void ngl::nsp_write< TDerived, TACTOR, T >::handle | ( | TDerived * | , |
| const message< np_channel_exit< T > > & | adata ) |
处理对等节点退出消息,从本地订阅缓存中移除该节点。
处理对等节点退出消息。
| aactor | 目标Actor指针 |
| adata | 退出消息 |
一旦对等节点退出,增量广播应停止将其作为目标。 从退出通知集合、全量读/写集合和部分订阅缓存中移除该节点。
| void ngl::nsp_write< TDerived, TACTOR, T >::handle | ( | TDerived * | aactor, |
| const message< np_channel_register_reply< T > > & | adata ) |
处理注册回复消息,更新对等节点列表、订阅范围和字段权限。
处理注册回复消息。
| aactor | 目标Actor指针 |
| adata | 注册回复消息 |
标记为已注册,清除定时器,更新字段权限,并记录全量/部分订阅节点及其订阅范围。
| void ngl::nsp_write< TDerived, TACTOR, T >::handle | ( | TDerived * | aactor, |
| const message< np_channel_data< T > > & | adata ) |
处理初始/增量数据同步消息。
| aactor | 目标Actor指针 |
| adata | 数据同步消息 |
首次同步时直接对齐到写端字段布局;增量更新时按源/目标类型重新映射字段。 同时处理新增/更新行和删除行,触发相应的用户回调。
| void ngl::nsp_write< TDerived, TACTOR, T >::init | ( | ) |
向目标NSP服务器启动注册定时器,周期性发送注册请求直到成功。
初始化写端:构建NSP服务器ID,注册消息处理器,启动注册重试定时器。
|
static |
|
static |
|
static |
创建具有显式读/写行和字段范围的写端。
创建具有显式读/写行和字段范围的写端。
| aactor | 拥有者Actor指针 |
| areadfieldnumbers | 只读字段编号集合 |
| awritefieldnumbers | 可写字段编号集合 |
| areadids | 只读数据ID集合 |
| awriteids | 可写数据ID集合 |
| aactor | 拥有者Actor指针 |
| areadfieldnumbers | 只读字段编号集合 |
| awritefieldnumbers | 可写字段编号集合 |
| areadids | 只读数据ID集合 |
| awriteids | 可写数据ID集合 |
| void ngl::nsp_write< 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_write< 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_write< 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 |