globalclock

package
v0.0.0-...-8ff1004 Latest Latest
Warning

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

Go to latest
Published: Feb 15, 2019 License: AGPL-3.0 Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrConcurrentUpdate is returned by Updater.Advance when the
	// clock value has been changed since the last read.
	ErrConcurrentUpdate = errors.New("clock was updated concurrently, retry")

	// ErrTimeout is returned by Updater.Advance if the attempt to
	// update the global clock timed out - in that case the advance
	// should be tried again.
	ErrTimeout = errors.New("clock update timed out, retry")
)

Functions

func IsConcurrentUpdate

func IsConcurrentUpdate(err error) bool

IsConcurrentUpdate returns whether the specified error represents ErrConcurrentUpdate (even if it's wrapped).

func IsTimeout

func IsTimeout(err error) bool

IsTimeout returns whether the specified error represents ErrTimeout (even if it's wrapped).

Types

type Updater

type Updater interface {
	// Advance adds the given duration to the global clock, ensuring
	// that the clock has not been updated concurrently.
	//
	// Advance will return ErrConcurrentUpdate if another updater
	// updates the clock concurrently. In this case, the updater
	// will refresh its view of the clock, and the caller can
	// attempt Advance later.
	//
	// If Advance returns any error other than ErrConcurrentUpdate or
	// ErrTimeout the Updater should be considered invalid, and the
	// caller should obtain a new Updater. Failing to do so could lead
	// to non-monotonic time, since there is no way of knowing in
	// general whether or not the database was updated.
	Advance(d time.Duration) error
}

Updater provides a means of updating the global clock time.

Jump to

Keyboard shortcuts

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