Back to godoc.org

Package lamport

v0.0.0-...-f3304bd
Latest Go to latest

The latest major version is .

Published: Jul 9, 2020 | License: GPL3 | Module: github.com/MichaelMure/git-bug

Index

Variables

var ErrClockNotExist = errors.New("clock doesn't exist")

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(filePath string) (*PersistedClock, error)

LoadPersistedClock load a persisted Lamport clock from a file

func NewPersistedClock

func NewPersistedClock(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.

Package Files

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier