Files
Aethera/kernel/kernel/include/relation/design.md
T
2026-09-02 21:36:29 +08:00

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() 的内部线程执行;调用方不得把它当成跨线程异常传播边界。