clock.go
 1package lamport
 2
 3// Time is the value of a Clock.
 4type Time uint64
 5
 6// Clock is a Lamport logical clock
 7type Clock interface {
 8	// Time is used to return the current value of the lamport clock
 9	Time() Time
10	// Increment is used to return the value of the lamport clock and increment it afterwards
11	Increment() (Time, error)
12	// Witness is called to update our local clock if necessary after
13	// witnessing a clock value received from another process
14	Witness(time Time) error
15}