View Source partisan_vclock (partisan v5.0.0-rc.8)
Summary
Types
The timestamp is present but not used, in case a client wishes to inspect it.
Functions
Return the list of all nodes that have ever incremented VClock.
Return true if Va is a direct descendant of Vb, else false -- remember, a vclock is its own descendant!
Compares two VClocks for equality.
Create a brand new vclock.
takes the output of
to_binary/1
and returns a vclockGet the counter value in VClock set from Node.
take two vclocks and return a vclock that summerizes only the events both have seen.
Increment VClock at Node.
Combine all VClocks in the input list into their least possible common descendant.
subtract the VClock from the DotList. what this means is that any
{actor(), count()}
pair in DotList that is <= an entry in VClock is removed from DotList Example [{a, 3}, {b, 2}, {d, 14}, {g, 22}] - [{a, 4}, {b, 1}, {c, 1}, {d, 14}, {e, 5}, {f, 2}] = [{{b, 2}, {g, 22}]an efficient format for disk / wire. 5 @see from_binary/1
Types
-type binary_vclock() :: binary().
-type counter() :: integer().
-type vc_entry() :: {vclock_node(), counter()}.
-type vclock() :: [vc_entry()].
-type vclock_node() :: term().
Functions
-spec all_nodes(VClock :: vclock()) -> [vclock_node()].
-spec fresh() -> vclock().
-spec from_binary(binary_vclock()) -> vclock().
to_binary/1
and returns a vclock
-spec get_counter(Node :: vclock_node(), VClock :: vclock()) -> counter().
-spec increment(Node :: vclock_node(), VClock :: vclock()) -> vclock().
{actor(), count()}
pair in DotList that is <= an entry in VClock is removed from DotList Example [{a, 3}, {b, 2}, {d, 14}, {g, 22}] - [{a, 4}, {b, 1}, {c, 1}, {d, 14}, {e, 5}, {f, 2}] = [{{b, 2}, {g, 22}]
-spec to_binary(vclock()) -> binary_vclock().