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