Expand description
Implements Tree Conflict-Free Replicated Data Type (CRDT).
For usage/examples, see: examples/demo.rs tests/tree.rs
This code aims to be an accurate implementation of the tree crdt described in:
“A highly-available move operation for replicated trees and distributed filesystems” [1] by Martin Klepmann, et al.
[1] https://martin.kleppmann.com/papers/move-op.pdf
For clarity, data structures in this implementation are named the same as in the paper (State, Tree) or close to (OpMove –> Move, LogOpMove –> LogOp). Some are not explicitly named in the paper, such as TreeId, TreeMeta, TreeNode, Clock.
Structs
Implements a
Lamport Clock
consisting of an Actor
and an integer counter.Implements
LogOpMove
, a log entry used by State
Implements
OpMove
, the only way to manipulate tree data.Holds Tree CRDT state and implements the core algorithm.
Implements
Tree
, a set of triples representing current tree structure.TreeNode
is a node that is stored in a Tree
.TreeReplica
holds tree State
plus lamport timestamp (actor + counter)