1.2 KiB
1.2 KiB
关系结构设计
关系结构与并发结构是同级协议,不共享 set/get/advance 语义。Relation_Registration<Relation, Tags...> 负责把一种关系实现连续注册给一个或多个 Tag,并提供三组按需组合的能力:实体侧事务 edit<Tag>(...)、Builder 侧 relation<Tag>(...) 初始化,以及 Private 侧 relation<Tag>()/commit<Tag>()。
Relation_Attachment 是关系实现的约束。实现必须提供权威 Graph、事务 Edit、事务完成回调,以及内部 relation()、commit()、build(...)。新关系类型只要满足该协议即可注册,不需要修改 Model。
dag/Dag_Relation.hpp 是 DAG 这一种具体关系实现:
Dag_Relation<Node_Facade>唯一拥有节点 proxy 和依赖边,拓扑顺序按权威关系即时计算。Dag_Relation::Builder负责构建期整体校验。Dag_Relation::Editor只记录单次事务命令。Owned_Dag_Relation<Node_Facade>接收外部事务,并由关系所有者在安全点调用commit()验证和提交。
关系模块不提供同步等待、事件或快照。编辑完成回调在调用 commit() 的内部线程执行;调用方不得把它当成跨线程异常传播边界。