pkg watch, const DoesNotExist int32
pkg watch, const Exists int32
pkg watch, const InitialStateSkipped int32
pkg watch, func GlobWatcherClient(string) GlobWatcherClientStub
pkg watch, func GlobWatcherServer(GlobWatcherServerMethods) GlobWatcherServerStub
pkg watch, func NewErrUnknownResumeMarker(*context.T) error
pkg watch, method (*Change) VDLRead(vdl.Decoder) error
pkg watch, method (*GlobRequest) VDLRead(vdl.Decoder) error
pkg watch, method (*GlobWatcherWatchGlobServerCallStub) Init(rpc.StreamServerCall)
pkg watch, method (*GlobWatcherWatchGlobServerCallStub) SendStream() interface {  Send(item Change) error;}
pkg watch, method (*ResumeMarker) VDLRead(vdl.Decoder) error
pkg watch, method (Change) VDLIsZero() bool
pkg watch, method (Change) VDLWrite(vdl.Encoder) error
pkg watch, method (GlobRequest) VDLIsZero() bool
pkg watch, method (GlobRequest) VDLWrite(vdl.Encoder) error
pkg watch, method (ResumeMarker) VDLIsZero() bool
pkg watch, method (ResumeMarker) VDLWrite(vdl.Encoder) error
pkg watch, type Change struct
pkg watch, type Change struct, Continued bool
pkg watch, type Change struct, Name string
pkg watch, type Change struct, ResumeMarker ResumeMarker
pkg watch, type Change struct, State int32
pkg watch, type Change struct, Value *vom.RawBytes
pkg watch, type GlobRequest struct
pkg watch, type GlobRequest struct, Pattern string
pkg watch, type GlobRequest struct, ResumeMarker ResumeMarker
pkg watch, type GlobWatcherClientMethods interface { WatchGlob }
pkg watch, type GlobWatcherClientMethods interface, WatchGlob(*context.T, GlobRequest, ...rpc.CallOpt) (GlobWatcherWatchGlobClientCall, error)
pkg watch, type GlobWatcherClientStub interface, WatchGlob(*context.T, GlobRequest, ...rpc.CallOpt) (GlobWatcherWatchGlobClientCall, error)
pkg watch, type GlobWatcherClientStub interface, unexported methods
pkg watch, type GlobWatcherServerMethods interface { WatchGlob }
pkg watch, type GlobWatcherServerMethods interface, WatchGlob(*context.T, GlobWatcherWatchGlobServerCall, GlobRequest) error
pkg watch, type GlobWatcherServerStub interface { Describe__, WatchGlob }
pkg watch, type GlobWatcherServerStub interface, Describe__() []rpc.InterfaceDesc
pkg watch, type GlobWatcherServerStub interface, WatchGlob(*context.T, *GlobWatcherWatchGlobServerCallStub, GlobRequest) error
pkg watch, type GlobWatcherServerStubMethods interface { WatchGlob }
pkg watch, type GlobWatcherServerStubMethods interface, WatchGlob(*context.T, *GlobWatcherWatchGlobServerCallStub, GlobRequest) error
pkg watch, type GlobWatcherWatchGlobClientCall interface { Finish, RecvStream }
pkg watch, type GlobWatcherWatchGlobClientCall interface, Finish() error
pkg watch, type GlobWatcherWatchGlobClientCall interface, RecvStream() interface {  Advance() bool;; Value() Change;; Err() error;}
pkg watch, type GlobWatcherWatchGlobClientStream interface { RecvStream }
pkg watch, type GlobWatcherWatchGlobClientStream interface, RecvStream() interface {  Advance() bool;; Value() Change;; Err() error;}
pkg watch, type GlobWatcherWatchGlobServerCall interface, SendStream() interface {  Send(item Change) error;}
pkg watch, type GlobWatcherWatchGlobServerCall interface, unexported methods
pkg watch, type GlobWatcherWatchGlobServerCallStub struct
pkg watch, type GlobWatcherWatchGlobServerCallStub struct, embedded rpc.StreamServerCall
pkg watch, type GlobWatcherWatchGlobServerStream interface { SendStream }
pkg watch, type GlobWatcherWatchGlobServerStream interface, SendStream() interface {  Send(item Change) error;}
pkg watch, type ResumeMarker []byte
pkg watch, var ErrUnknownResumeMarker unknown-type
pkg watch, var GlobWatcherDesc rpc.InterfaceDesc
