watch

package
v1.8.7 Latest Latest
Warning

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

Go to latest
Published: May 28, 2019 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package watch implements better watch semantics on top of etcd. See this issue for the reasoning behind the package: https://github.com/coreos/etcd/issues/7362

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckType added in v1.7.0

func CheckType(template proto.Message, val interface{}) error

CheckType checks to make sure val has the same type as template, unless template is nil in which case it always returns nil.

Types

type Event

type Event struct {
	Key       []byte
	Value     []byte
	PrevKey   []byte
	PrevValue []byte
	Type      EventType
	Rev       int64
	Err       error
	Template  proto.Message
}

Event is an event that occurred to an item in etcd.

func (*Event) Unmarshal

func (e *Event) Unmarshal(key *string, val proto.Message) error

Unmarshal unmarshals the item in an event into a protobuf message.

func (*Event) UnmarshalPrev added in v1.5.0

func (e *Event) UnmarshalPrev(key *string, val proto.Message) error

UnmarshalPrev unmarshals the prev item in an event into a protobuf message.

type EventType

type EventType int

EventType is the type of event

const (
	// EventPut happens when an item is added
	EventPut EventType = iota
	// EventDelete happens when an item is removed
	EventDelete
	// EventError happens when an error occurred
	EventError
)

type OpOption added in v1.8.6

type OpOption etcd.OpOption

OpOption is a simple typedef for etcd.OpOption.

func WithFilterPut added in v1.8.6

func WithFilterPut() OpOption

WithFilterPut discards PUT events from the watcher.

func WithPrevKV added in v1.8.6

func WithPrevKV() OpOption

WithPrevKV gets the previous key-value pair before the event happens. If the previous KV is already compacted, nothing will be returned.

type Watcher

type Watcher interface {
	// Watch returns a channel that delivers events
	Watch() <-chan *Event
	// Close this channel when you are done receiving events
	Close()
}

Watcher ...

func MakeWatcher

func MakeWatcher(eventCh chan *Event, done chan struct{}) Watcher

MakeWatcher returns a Watcher that uses the given event channel and done channel internally to deliver events and signal closure, respectively.

func NewWatcher

func NewWatcher(ctx context.Context, client *etcd.Client, trimPrefix, prefix string, template proto.Message, opts ...OpOption) (Watcher, error)

NewWatcher watches a given etcd prefix for events.

Jump to

Keyboard shortcuts

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