func (s *store) Watch(key string, recursive bool, sinceIndex uint64) (<-chan *Event, error) { key = path.Clean(path.Join("/", key)) nextIndex := s.CurrentIndex + 1 s.worldLock.RLock() defer s.worldLock.RUnlock() var c <-chan *Event var err *etcdErr.Error if sinceIndex == 0 { c, err = s.WatcherHub.watch(key, recursive, nextIndex) } else { c, err = s.WatcherHub.watch(key, recursive, sinceIndex) } if err != nil { // watchhub do not know the current Index // we need to attach the currentIndex here err.Index = s.CurrentIndex return nil, err } return c, nil }
func (s *store) Watch(key string, recursive, stream bool, sinceIndex uint64) (*Watcher, error) { s.worldLock.RLock() defer s.worldLock.RUnlock() key = path.Clean(path.Join("/", key)) nextIndex := s.CurrentIndex + 1 var w *Watcher var err *etcdErr.Error if sinceIndex == 0 { w, err = s.WatcherHub.watch(key, recursive, stream, nextIndex) } else { w, err = s.WatcherHub.watch(key, recursive, stream, sinceIndex) } if err != nil { // watchhub do not know the current Index // we need to attach the currentIndex here err.Index = s.CurrentIndex return nil, err } return w, nil }