def _read_watch_event(self, buffer, offset): client = self.client watch, offset = Watch.deserialize(buffer, offset) path = watch.path self.logger.debug('Received EVENT: %s', watch) watchers = [] if watch.type in (CREATED_EVENT, CHANGED_EVENT): watchers.extend(client._data_watchers.pop(path, [])) elif watch.type == DELETED_EVENT: watchers.extend(client._data_watchers.pop(path, [])) watchers.extend(client._child_watchers.pop(path, [])) elif watch.type == CHILD_EVENT: watchers.extend(client._child_watchers.pop(path, [])) else: self.logger.warn('Received unknown event %r', watch.type) return # Strip the chroot if needed path = client.unchroot(path) ev = WatchedEvent(EVENT_TYPE_MAP[watch.type], client._state, path) # Last check to ignore watches if we've been stopped if client._stopped.is_set(): return # Dump the watchers to the watch thread for watch in watchers: client.handler.dispatch_callback(Callback('watch', watch, (ev,)))
def _read_watch_event(self, buffer, offset): client = self.client watch, offset = Watch.deserialize(buffer, offset) path = watch.path if self.log_debug: log.debug('Received EVENT: %s', watch) watchers = [] if watch.type in (CREATED_EVENT, CHANGED_EVENT): watchers.extend(client._data_watchers.pop(path, [])) elif watch.type == DELETED_EVENT: watchers.extend(client._data_watchers.pop(path, [])) watchers.extend(client._child_watchers.pop(path, [])) elif watch.type == CHILD_EVENT: watchers.extend(client._child_watchers.pop(path, [])) else: log.warn('Received unknown event %r', watch.type) return # Strip the chroot if needed path = client.unchroot(path) ev = WatchedEvent(EVENT_TYPE_MAP[watch.type], client._state, path) # Last check to ignore watches if we've been stopped if client._stopped.is_set(): return # Dump the watchers to the watch thread for watch in watchers: client.handler.dispatch_callback(Callback('watch', watch, (ev, )))