Dart Hybrid Logical Clock (HLC)
This is a Dart port of the hybrid logical clock implementation described by Jared Forsyth in this article.
HLCs are a useful primitive for CRDT implementations.
Generated documentation can be found here.
dependencies: hlc: ^1.0.0
Import the library:
Initialize a local HLC with the current wall clock:
var hlc = HLC.now();
Perform a local action that requires advancing the local HLC:
hlc = hlc.increment();
Receive a remote HLC, applying it to the local one:
final remoteHlc = HLC.now(); // From somewhere in the network. hlc = hlc.receive(remoteHlc);
Serialize/deserialize an HLC while maintaining its topological ordering:
final serialized = hlc.pack(); final deserialized = HLC.unpack(serialized);