const EventTypeDelete …
const EventTypePut …
const closeSendErrTimeout …
const AutoWatchID …
const InvalidWatchID …
type Event …
type WatchChan …
type Watcher …
type WatchResponse …
func (e *Event) IsCreate() bool { … }
func (e *Event) IsModify() bool { … }
func (wr *WatchResponse) Err() error { … }
func (wr *WatchResponse) IsProgressNotify() bool { … }
type watcher …
type watchGrpcStream …
type watchStreamRequest …
type watchRequest …
type progressRequest …
type watcherStream …
func NewWatcher(c *Client) Watcher { … }
func NewWatchFromWatchClient(wc pb.WatchClient, c *Client) Watcher { … }
var valCtxCh …
var zeroTime …
type valCtx …
func (vc *valCtx) Deadline() (time.Time, bool) { … }
func (vc *valCtx) Done() <-chan struct{ … }
func (vc *valCtx) Err() error { … }
func (w *watcher) newWatcherGrpcStream(inctx context.Context) *watchGrpcStream { … }
func (w *watcher) Watch(ctx context.Context, key string, opts ...OpOption) WatchChan { … }
func (w *watcher) Close() (err error) { … }
func (w *watcher) RequestProgress(ctx context.Context) (err error) { … }
func (w *watchGrpcStream) close() (err error) { … }
func (w *watcher) closeStream(wgs *watchGrpcStream) { … }
func (w *watchGrpcStream) addSubstream(resp *pb.WatchResponse, ws *watcherStream) { … }
func (w *watchGrpcStream) sendCloseSubstream(ws *watcherStream, resp *WatchResponse) { … }
func (w *watchGrpcStream) closeSubstream(ws *watcherStream) { … }
func (w *watchGrpcStream) run() { … }
func (w *watchGrpcStream) nextResume() *watcherStream { … }
func (w *watchGrpcStream) dispatchEvent(pbresp *pb.WatchResponse) bool { … }
func (w *watchGrpcStream) broadcastResponse(wr *WatchResponse) bool { … }
func (w *watchGrpcStream) unicastResponse(wr *WatchResponse, watchId int64) bool { … }
func (w *watchGrpcStream) serveWatchClient(wc pb.Watch_WatchClient) { … }
func (w *watchGrpcStream) serveSubstream(ws *watcherStream, resumec chan struct{ … }
func (w *watchGrpcStream) newWatchClient() (pb.Watch_WatchClient, error) { … }
func (w *watchGrpcStream) waitCancelSubstreams(stopc <-chan struct{ … }
func (w *watchGrpcStream) joinSubstreams() { … }
var maxBackoff …
func (w *watchGrpcStream) backoffIfUnavailable(backoff time.Duration, err error) time.Duration { … }
func (w *watchGrpcStream) openWatchClient() (ws pb.Watch_WatchClient, err error) { … }
func (wr *watchRequest) toPB() *pb.WatchRequest { … }
func (pr *progressRequest) toPB() *pb.WatchRequest { … }
func streamKeyFromCtx(ctx context.Context) string { … }