mirror of https://github.com/docker/docs.git
WatchCallback
Signed-off-by: Victor Vieux <vieux@docker.com>
This commit is contained in:
parent
f2ca549f46
commit
e2b6f00c23
|
@ -87,7 +87,7 @@ simply implements this interface:
|
||||||
type DiscoveryService interface {
|
type DiscoveryService interface {
|
||||||
Initialize(string, int) error
|
Initialize(string, int) error
|
||||||
Fetch() ([]string, error)
|
Fetch() ([]string, error)
|
||||||
Watch(func([]*Node))
|
Watch(WatchCallback)
|
||||||
Register(string) error
|
Register(string) error
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
|
@ -24,10 +24,12 @@ func (n Node) String() string {
|
||||||
return n.url
|
return n.url
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type WatchCallback func(nodes []*Node)
|
||||||
|
|
||||||
type DiscoveryService interface {
|
type DiscoveryService interface {
|
||||||
Initialize(string, int) error
|
Initialize(string, int) error
|
||||||
Fetch() ([]*Node, error)
|
Fetch() ([]*Node, error)
|
||||||
Watch(func(nodes []*Node))
|
Watch(WatchCallback)
|
||||||
Register(string) error
|
Register(string) error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,14 +63,14 @@ func (s *EtcdDiscoveryService) Fetch() ([]*discovery.Node, error) {
|
||||||
return nodes, nil
|
return nodes, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *EtcdDiscoveryService) Watch(updateNodes func(nodes []*discovery.Node)) {
|
func (s *EtcdDiscoveryService) Watch(callback discovery.WatchCallback) {
|
||||||
watchChan := make(chan *etcd.Response)
|
watchChan := make(chan *etcd.Response)
|
||||||
go s.client.Watch(s.path, 0, true, watchChan, nil)
|
go s.client.Watch(s.path, 0, true, watchChan, nil)
|
||||||
for _ = range watchChan {
|
for _ = range watchChan {
|
||||||
log.Debugf("[ETCD] Watch triggered")
|
log.Debugf("[ETCD] Watch triggered")
|
||||||
nodes, err := s.Fetch()
|
nodes, err := s.Fetch()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
updateNodes(nodes)
|
callback(nodes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/docker/swarm/discovery"
|
"github.com/docker/swarm/discovery"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -43,11 +44,11 @@ func (s *FileDiscoveryService) Fetch() ([]*discovery.Node, error) {
|
||||||
return nodes, nil
|
return nodes, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *FileDiscoveryService) Watch(updateNodes func(nodes []*discovery.Node)) {
|
func (s *FileDiscoveryService) Watch(callback discovery.WatchCallback) {
|
||||||
for _ = range time.Tick(time.Duration(s.heartbeat) * time.Second) {
|
for _ = range time.Tick(time.Duration(s.heartbeat) * time.Second) {
|
||||||
nodes, err := s.Fetch()
|
nodes, err := s.Fetch()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
updateNodes(nodes)
|
callback(nodes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,11 +66,11 @@ func (s *TokenDiscoveryService) Fetch() ([]*discovery.Node, error) {
|
||||||
return nodes, nil
|
return nodes, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TokenDiscoveryService) Watch(updateNodes func(nodes []*discovery.Node)) {
|
func (s *TokenDiscoveryService) Watch(callback discovery.WatchCallback) {
|
||||||
for _ = range time.Tick(time.Duration(s.heartbeat) * time.Second) {
|
for _ = range time.Tick(time.Duration(s.heartbeat) * time.Second) {
|
||||||
nodes, err := s.Fetch()
|
nodes, err := s.Fetch()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
updateNodes(nodes)
|
callback(nodes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue