public override Task process(WatchedEvent @event) { lock (this) { if (@event.getState() == Event.KeeperState.SyncConnected || @event.getState() == Event.KeeperState.ConnectedReadOnly) { Monitor.PulseAll(this); clientConnected.Set(); } else { Monitor.PulseAll(this); } } return(CompletedTask); }
private void queueEvent(WatchedEvent @event) { if (@event.get_Type() == Watcher.Event.EventType.None && sessionState.Value == @event.getState()) { return; } sessionState.Value = @event.getState(); // materialize the watchers based on the event WatcherSetEventPair pair = new WatcherSetEventPair( watcher.materialize(@event.getState(), @event.get_Type(), @event.getPath()), @event); // queue the pair (watch set & event) for later processing waitingEvents.Enqueue(pair); waitingEventsSignal.Set(); }