package recipe
import "github.com/coreos/etcd/contrib/recipes"
Index ¶
- Variables
- func WaitEvents(c *clientv3.Client, key string, rev int64, evs []storagepb.Event_EventType) (*storagepb.Event, error)
- func WaitPrefixEvents(c *clientv3.Client, prefix string, rev int64, evs []storagepb.Event_EventType) (*storagepb.Event, error)
- type Barrier
- func NewBarrier(client *v3.Client, key string) *Barrier
- func (b *Barrier) Hold() error
- func (b *Barrier) Release() error
- func (b *Barrier) Wait() error
- type DoubleBarrier
- func NewDoubleBarrier(client *clientv3.Client, key string, count int) *DoubleBarrier
- func (b *DoubleBarrier) Enter() error
- func (b *DoubleBarrier) Leave() error
- type EphemeralKV
- func NewEphemeralKV(client *v3.Client, key, val string) (*EphemeralKV, error)
- func NewUniqueEphemeralKV(client *v3.Client, prefix, val string) (ek *EphemeralKV, err error)
- func NewUniqueEphemeralKey(client *v3.Client, prefix string) (*EphemeralKV, error)
- type PriorityQueue
- func NewPriorityQueue(client *v3.Client, key string) *PriorityQueue
- func (q *PriorityQueue) Dequeue() (string, error)
- func (q *PriorityQueue) Enqueue(val string, pr uint16) error
- type Queue
- func NewQueue(client *v3.Client, keyPrefix string) *Queue
- func (q *Queue) Dequeue() (string, error)
- func (q *Queue) Enqueue(val string) error
- type RWMutex
- func NewRWMutex(client *v3.Client, key string) *RWMutex
- func (rwm *RWMutex) Lock() error
- func (rwm *RWMutex) RLock() error
- func (rwm *RWMutex) RUnlock() error
- func (rwm *RWMutex) Unlock() error
- type RemoteKV
- func GetRemoteKV(kv v3.KV, key string) (*RemoteKV, error)
- func NewKV(kv v3.KV, key, val string, leaseID v3.LeaseID) (*RemoteKV, error)
- func NewKey(kv v3.KV, key string, leaseID v3.LeaseID) (*RemoteKV, error)
- func NewSequentialKV(kv v3.KV, prefix, val string) (*RemoteKV, error)
- func NewUniqueKV(kv v3.KV, prefix string, val string, leaseID v3.LeaseID) (*RemoteKV, error)
- func NewUniqueKey(kv v3.KV, prefix string) (*RemoteKV, error)
- func (rk *RemoteKV) Delete() error
- func (rk *RemoteKV) Key() string
- func (rk *RemoteKV) Put(val string) error
- func (rk *RemoteKV) Revision() int64
- func (rk *RemoteKV) Value() string
Variables ¶
var ( ErrKeyExists = errors.New("key already exists") ErrWaitMismatch = errors.New("unexpected wait result") ErrTooManyClients = errors.New("too many clients") ErrNoWatcher = errors.New("no watcher channel") )
Functions ¶
func WaitEvents ¶
func WaitEvents(c *clientv3.Client, key string, rev int64, evs []storagepb.Event_EventType) (*storagepb.Event, error)
WaitEvents waits on a key until it observes the given events and returns the final one.
func WaitPrefixEvents ¶
func WaitPrefixEvents(c *clientv3.Client, prefix string, rev int64, evs []storagepb.Event_EventType) (*storagepb.Event, error)
Types ¶
type Barrier ¶
type Barrier struct {
// contains filtered or unexported fields
}
Barrier creates a key in etcd to block processes, then deletes the key to release all blocked processes.
func NewBarrier ¶
func (*Barrier) Hold ¶
Hold creates the barrier key causing processes to block on Wait.
func (*Barrier) Release ¶
Release deletes the barrier key to unblock all waiting processes.
func (*Barrier) Wait ¶
Wait blocks on the barrier key until it is deleted. If there is no key, Wait assumes Release has already been called and returns immediately.
type DoubleBarrier ¶
type DoubleBarrier struct {
// contains filtered or unexported fields
}
DoubleBarrier blocks processes on Enter until an expected count enters, then blocks again on Leave until all processes have left.
func NewDoubleBarrier ¶
func NewDoubleBarrier(client *clientv3.Client, key string, count int) *DoubleBarrier
func (*DoubleBarrier) Enter ¶
func (b *DoubleBarrier) Enter() error
Enter waits for "count" processes to enter the barrier then returns
func (*DoubleBarrier) Leave ¶
func (b *DoubleBarrier) Leave() error
Leave waits for "count" processes to leave the barrier then returns
type EphemeralKV ¶
type EphemeralKV struct{ RemoteKV }
EphemeralKV is a new key associated with a session lease
func NewEphemeralKV ¶
func NewEphemeralKV(client *v3.Client, key, val string) (*EphemeralKV, error)
NewEphemeralKV creates a new key/value pair associated with a session lease
func NewUniqueEphemeralKV ¶
func NewUniqueEphemeralKV(client *v3.Client, prefix, val string) (ek *EphemeralKV, err error)
NewUniqueEphemeralKV creates a new unique key/value pair associated with a session lease
func NewUniqueEphemeralKey ¶
func NewUniqueEphemeralKey(client *v3.Client, prefix string) (*EphemeralKV, error)
NewUniqueEphemeralKey creates a new unique valueless key associated with a session lease
type PriorityQueue ¶
type PriorityQueue struct {
// contains filtered or unexported fields
}
PriorityQueue implements a multi-reader, multi-writer distributed queue.
func NewPriorityQueue ¶
func NewPriorityQueue(client *v3.Client, key string) *PriorityQueue
NewPriorityQueue creates an etcd priority queue.
func (*PriorityQueue) Dequeue ¶
func (q *PriorityQueue) Dequeue() (string, error)
Dequeue returns Enqueue()'d items in FIFO order. If the queue is empty, Dequeue blocks until items are available.
func (*PriorityQueue) Enqueue ¶
func (q *PriorityQueue) Enqueue(val string, pr uint16) error
Enqueue puts a value into a queue with a given priority.
type Queue ¶
type Queue struct {
// contains filtered or unexported fields
}
Queue implements a multi-reader, multi-writer distributed queue.
func NewQueue ¶
func (*Queue) Dequeue ¶
Dequeue returns Enqueue()'d elements in FIFO order. If the queue is empty, Dequeue blocks until elements are available.
func (*Queue) Enqueue ¶
type RWMutex ¶
type RWMutex struct {
// contains filtered or unexported fields
}
func NewRWMutex ¶
func (*RWMutex) Lock ¶
func (*RWMutex) RLock ¶
func (*RWMutex) RUnlock ¶
func (*RWMutex) Unlock ¶
type RemoteKV ¶
type RemoteKV struct {
// contains filtered or unexported fields
}
Key is a key/revision pair created by the client and stored on etcd
func GetRemoteKV ¶
func NewKV ¶
func NewKey ¶
func NewSequentialKV ¶
NewSequentialKV allocates a new sequential key-value pair at <prefix>/nnnnn
func NewUniqueKV ¶
func NewUniqueKey ¶
func (*RemoteKV) Delete ¶
func (*RemoteKV) Key ¶
func (*RemoteKV) Put ¶
func (*RemoteKV) Revision ¶
func (*RemoteKV) Value ¶
Source Files ¶
barrier.go client.go double_barrier.go key.go priority_queue.go queue.go rwmutex.go watch.go
- Version
- v2.3.8+incompatible (latest)
- Published
- Feb 16, 2017
- Platform
- linux/amd64
- Imports
- 8 packages
- Last checked
- 19 hours ago –
Tools for package owners.