Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrClockNotExist = errors.New("clock doesn't exist")
Functions ¶
This section is empty.
Types ¶
type Clock ¶
type Clock interface {
// Time is used to return the current value of the lamport clock
Time() Time
// Increment is used to return the value of the lamport clock and increment it afterwards
Increment() (Time, error)
// Witness is called to update our local clock if necessary after
// witnessing a clock value received from another process
Witness(time Time) error
}
Clock is a Lamport logical clock
type MemClock ¶
type MemClock struct {
// contains filtered or unexported fields
}
MemClock is a thread safe implementation of a lamport clock. It uses efficient atomic operations for all of its functions, falling back to a heavy lock only if there are enough CAS failures.
func NewMemClock ¶
func NewMemClock() *MemClock
NewMemClock create a new clock with the value 1. Value 0 is considered as invalid.
func NewMemClockWithTime ¶
NewMemClockWithTime create a new clock with a value.
func (*MemClock) Increment ¶
Increment is used to return the value of the lamport clock and increment it afterwards
type PersistedClock ¶
type PersistedClock struct {
*MemClock
// contains filtered or unexported fields
}
func LoadPersistedClock ¶
func LoadPersistedClock(root billy.Filesystem, filePath string) (*PersistedClock, error)
LoadPersistedClock load a persisted Lamport clock from a file
func NewPersistedClock ¶
func NewPersistedClock(root billy.Filesystem, filePath string) (*PersistedClock, error)
NewPersistedClock create a new persisted Lamport clock
func (*PersistedClock) Increment ¶
func (pc *PersistedClock) Increment() (Time, error)
Increment is used to return the value of the lamport clock and increment it afterwards
func (*PersistedClock) Witness ¶
func (pc *PersistedClock) Witness(time Time) error
Witness is called to update our local clock if necessary after witnessing a clock value received from another process
func (*PersistedClock) Write ¶
func (pc *PersistedClock) Write() error