github.com/sijibomii/docker@v0.0.0-20231230191044-5cf6ca554647/pkg/discovery/discovery.go (about) 1 package discovery 2 3 import ( 4 "errors" 5 "time" 6 ) 7 8 var ( 9 // ErrNotSupported is returned when a discovery service is not supported. 10 ErrNotSupported = errors.New("discovery service not supported") 11 12 // ErrNotImplemented is returned when discovery feature is not implemented 13 // by discovery backend. 14 ErrNotImplemented = errors.New("not implemented in this discovery service") 15 ) 16 17 // Watcher provides watching over a cluster for nodes joining and leaving. 18 type Watcher interface { 19 // Watch the discovery for entry changes. 20 // Returns a channel that will receive changes or an error. 21 // Providing a non-nil stopCh can be used to stop watching. 22 Watch(stopCh <-chan struct{}) (<-chan Entries, <-chan error) 23 } 24 25 // Backend is implemented by discovery backends which manage cluster entries. 26 type Backend interface { 27 // Watcher must be provided by every backend. 28 Watcher 29 30 // Initialize the discovery with URIs, a heartbeat, a ttl and optional settings. 31 Initialize(string, time.Duration, time.Duration, map[string]string) error 32 33 // Register to the discovery. 34 Register(string) error 35 }