|
ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
|
存储每个Actor类型的字段权限,使NSP仅在读/写/服务器节点之间复制允许的protobuf字段。 More...
#include <nsp.h>
Public Member Functions | |
| void | init (bool anspserver) |
| 重置字段规则,并在服务器端和客户端合并策略之间切换。 | |
| void | set_field (i16_actortype atype, const std::map< i32_fieldnumber, epb_field > &anode_fieldnumbers) |
| 将一个Actor类型的字段权限合并到表中。 | |
| void | set_field (const std::map< i16_actortype, std::map< i32_fieldnumber, epb_field > > &anode_fieldnumbers) |
| 合并完整的 Actor类型 -> 字段权限 映射表。 | |
| void | add_field (i16_actortype atype, i32_fieldnumber afieldnumber, epb_field afieldtype) |
| 为一个Actor类型添加一个字段权限。 | |
| template<typename T> | |
| void | add_field (i16_actortype atype, epb_field afieldtype, const std::set< i32_fieldnumber > &afield) |
| 为一个Actor类型的多个字段批量设置权限。 | |
| template<typename T> | |
| void | add_field (i16_actortype atype, const std::set< i32_fieldnumber > &areadfield, const std::set< i32_fieldnumber > &awritefield) |
| 为一个Actor类型分别设置读和写字段权限。 | |
| std::map< i32_fieldnumber, epb_field > * | get_field (i16_actortype atype) |
| 返回指定Actor类型的字段权限表。 | |
| template<typename T> | |
| bool | field_copy (i16_actortype atypesource, i16_actortype atypetarget, const T &asource, T &atarget, bool amessage) |
| 仅复制源/目标权限表允许的字段。 | |
| template<typename T> | |
| bool | field_copy (i16_actortype atype, const T &asource, T &atarget, bool amessage) |
| 使用单个Actor类型的字段权限表进行复制。 | |
| std::map< i16_actortype, std::map< i32_fieldnumber, epb_field > > & | field_numbers () |
| 暴露完整的 Actor类型 -> 字段权限 映射表。 | |
存储每个Actor类型的字段权限,使NSP仅在读/写/服务器节点之间复制允许的protobuf字段。
管理protobuf字段的访问权限,控制不同Actor类型之间的数据同步。 服务器端合并保持严格的字段角色一致性,客户端合并允许写权限覆盖读权限。
|
inline |
为一个Actor类型分别设置读和写字段权限。
| T | protobuf消息类型 |
| atype | Actor类型 |
| areadfield | 读权限字段编号集合;空集表示订阅所有字段 |
| awritefield | 写权限字段编号集合 |
|
inline |
为一个Actor类型的多个字段批量设置权限。
| T | protobuf消息类型 |
| atype | Actor类型 |
| afieldtype | 字段权限类型 |
| afield | 字段编号集合;读权限时空集表示订阅所有字段,写权限时空集会触发断言 |
| void ngl::operator_field::add_field | ( | i16_actortype | atype, |
| i32_fieldnumber | afieldnumber, | ||
| epb_field | afieldtype ) |
为一个Actor类型添加一个字段权限。
添加单个字段权限
| atype | Actor类型 |
| afieldnumber | 字段编号 |
| afieldtype | 字段权限类型 |
根据是否为NSP服务器端选择不同的合并策略。
| atype | Actor类型 |
| afieldnumber | 字段编号 |
| afieldtype | 字段权限类型 |
|
inline |
使用单个Actor类型的字段权限表进行复制。
| T | protobuf消息类型 |
| atype | Actor类型 |
| asource | 源消息对象 |
| atarget | 目标消息对象(输出参数) |
| amessage | true表示复制消息级字段,false表示复制子消息字段 |
|
inline |
仅复制源/目标权限表允许的字段。
| T | protobuf消息类型 |
| atypesource | 源Actor类型 |
| atypetarget | 目标Actor类型 |
| asource | 源消息对象 |
| atarget | 目标消息对象(输出参数) |
| amessage | true表示复制消息级字段,false表示复制子消息字段 |
| std::map< i16_actortype, std::map< i32_fieldnumber, epb_field > > & ngl::operator_field::field_numbers | ( | ) |
暴露完整的 Actor类型 -> 字段权限 映射表。
| std::map< i32_fieldnumber, epb_field > * ngl::operator_field::get_field | ( | i16_actortype | atype | ) |
返回指定Actor类型的字段权限表。
| atype | Actor类型 |
| void ngl::operator_field::init | ( | bool | anspserver | ) |
重置字段规则,并在服务器端和客户端合并策略之间切换。
初始化字段权限管理器
| anspserver | true表示服务器端模式,false表示客户端模式 |
| anspserver | 是否为NSP服务器端 |
| void ngl::operator_field::set_field | ( | const std::map< i16_actortype, std::map< i32_fieldnumber, epb_field > > & | anode_fieldnumbers | ) |
合并完整的 Actor类型 -> 字段权限 映射表。
| anode_fieldnumbers | 完整的字段权限映射表 |
| void ngl::operator_field::set_field | ( | i16_actortype | atype, |
| const std::map< i32_fieldnumber, epb_field > & | anode_fieldnumbers ) |
将一个Actor类型的字段权限合并到表中。
设置单个Actor类型的字段权限映射
| atype | Actor类型 |
| anode_fieldnumbers | 字段编号到权限类型的映射 |
合并来自多个对等节点的重复通告,保持角色一致性。
| atype | Actor类型 |
| anode_fieldnumbers | 字段编号到权限的映射 |