Version: v3.5.2 Latest Latest

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

Go to latest
Published: Jul 6, 2021 License: Apache-2.0 Imports: 2 Imported by: 3



Package sync is an interface for distributed synchronization



This section is empty.


View Source
var (
	ErrLockTimeout = errors.New("lock timeout")


This section is empty.


type Leader

type Leader interface {
	// resign leadership
	Resign() error
	// status returns when leadership is lost
	Status() chan bool

Leader provides leadership election

type LeaderOption

type LeaderOption func(o *LeaderOptions)

type LeaderOptions

type LeaderOptions struct{}

type LockOption

type LockOption func(o *LockOptions)

func LockTTL

func LockTTL(t time.Duration) LockOption

LockTTL sets the lock ttl

func LockWait

func LockWait(t time.Duration) LockOption

LockWait sets the wait time

type LockOptions

type LockOptions struct {
	TTL  time.Duration
	Wait time.Duration

type Option

type Option func(o *Options)

func Nodes

func Nodes(a ...string) Option

Nodes sets the addresses to use

func Prefix

func Prefix(p string) Option

Prefix sets a prefix to any lock ids used

type Options

type Options struct {
	Nodes  []string
	Prefix string

type Sync

type Sync interface {
	// Initialise options
	Init(...Option) error
	// Return the options
	Options() Options
	// Elect a leader
	Leader(id string, opts ...LeaderOption) (Leader, error)
	// Lock acquires a lock
	Lock(id string, opts ...LockOption) error
	// Unlock releases a lock
	Unlock(id string) error
	// Sync implementation
	String() string

Sync is an interface for distributed synchronization

Source Files

Jump to

Keyboard shortcuts

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