Beispiel #1
0
 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);
 }
Beispiel #2
0
        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();
        }