Copyright © 2013, Jeremy Tregunna, All Rights Reserved.
JVectorClock is an implementation of a Vector Clock written in Objective-C. Vector clocks are useful when building distributed systems.
However you want to install it is well, a matter left up to your better judgement. There are no external dependencies you have to account for, other than basic framework level support.
All vector clocks start out with a value of
0. You can create a new empty clock by allocating an instance like so:
JVectorClock* clock = [[JVectorClock alloc] init];
In this state, we can issue a fork passing in a node ID (the node which triggered the event) like this, assuming the node ID is 42:
From here, we can see the value of our clock by asking for the
NSLog(@"%@", [clock UTF8String]);
This should print out
(42 = 1). If we have another clock like this:
JVectorClock* other = [[JVectorClock alloc] init]; [other forkClockForNodeID:12]; [other forkClockForNodeID:12]; // Two events!
We can merge them together into a new vector clock by calling the
JVectorClock* newClock = [clock mergeClock:other];
Finally we can see that this actually took effect by looking at the output using
NSLog(@"%@", [newClock UTF8String]);
We should see
(42 = 1, 12 = 2).
The terms under which use and distribution of this library is governed may be found in the LICENSE file.