Esempio n. 1
0
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
}
Esempio n. 2
0
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
}