public class ZooKeeper { ... // Manage watches with explicit mode. void addWatch (String basePath, AddWatchMode mode); void removeWatches (String path, Watcher watcher, Watcher.WatcherType watcherType, boolean local); ... } public enum AddWatchMode { PERSISTENT (0), PERSISTENT_RECURSIVE (1); } public interface Watcher { abstract public void process (WatchedEvent event); public interface Event { public enum EventType { None (-1), NodeCreated (1), NodeDeleted (2), NodeDataChanged (3), NodeChildrenChanged (4); ... } } } public class WatchedEvent { ... public KeeperState getState () { ... } public EventType getType () { ... } public String getPath () { ... } }
One shot watches are removed after every event
Persistent watches stay until removed explicitly
Recursive watches also report events on children