callback 1 time before looping over the zookeeper's event channel

Signed-off-by: Chanwit Kaewkasi <chanwit@gmail.com>
This commit is contained in:
Chanwit Kaewkasi 2015-01-10 00:52:49 +07:00
parent 3dfc92639c
commit 1b8166c7a5
1 changed files with 13 additions and 4 deletions

View File

@ -56,21 +56,30 @@ func (s *ZkDiscoveryService) Fetch() ([]*discovery.Node, error) {
return nil, err
}
var nodes []*discovery.Node
return s.createNodes(addrs), nil
}
func (s *ZkDiscoveryService) createNodes(addrs []string) (nodes []*discovery.Node) {
nodes = make([]*discovery.Node, 0)
if addrs == nil {
return
}
for _, addr := range addrs {
nodes = append(nodes, discovery.NewNode(addr))
}
return nodes, nil
return
}
func (s *ZkDiscoveryService) Watch(callback discovery.WatchCallback) {
_, _, eventChan, err := s.conn.ChildrenW(s.path)
addrs, _, eventChan, err := s.conn.ChildrenW(s.path)
if err != nil {
log.Debugf("[ZK] Watch aborted")
return
}
nodes := s.createNodes(addrs)
callback(nodes)
for e := range eventChan {
if e.Type == zk.EventNodeChildrenChanged {