lamport

package
v0.3.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 21, 2022 License: GPL-3.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
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

func NewMemClockWithTime(time uint64) *MemClock

NewMemClockWithTime create a new clock with a value.

func (*MemClock) Increment

func (mc *MemClock) Increment() (Time, error)

Increment is used to return the value of the lamport clock and increment it afterwards

func (*MemClock) Time

func (mc *MemClock) Time() Time

Time is used to return the current value of the lamport clock

func (*MemClock) Witness

func (mc *MemClock) Witness(v Time) error

Witness is called to update our local clock if necessary after witnessing a clock value received from another process

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

type Time

type Time uint64

Time is the value of a Clock.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL