@Override public void run() { Iterator<Entry<WatchdogStream, Object>> it = openStreams.entrySet().iterator(); while (it.hasNext()) { WatchdogStream stream = it.next().getKey(); if (stream.cancelIfStale()) { it.remove(); } } }
/** Wraps the target observer with timing constraints. */ public <ResponseT> ResponseObserver<ResponseT> watch( ResponseObserver<ResponseT> innerObserver, @Nonnull Duration waitTimeout, @Nonnull Duration idleTimeout) { Preconditions.checkNotNull(innerObserver, "innerObserver can't be null"); Preconditions.checkNotNull(waitTimeout, "waitTimeout can't be null"); Preconditions.checkNotNull(idleTimeout, "idleTimeout can't be null"); if (waitTimeout.isZero() && idleTimeout.isZero()) { return innerObserver; } WatchdogStream<ResponseT> stream = new WatchdogStream<>(innerObserver, waitTimeout, idleTimeout); openStreams.put(stream, PRESENT); return stream; }
/** Wraps the target observer with timing constraints. */ public <ResponseT> ResponseObserver<ResponseT> watch( ResponseObserver<ResponseT> innerObserver, @Nonnull Duration waitTimeout, @Nonnull Duration idleTimeout) { Preconditions.checkNotNull(innerObserver, "innerObserver can't be null"); Preconditions.checkNotNull(waitTimeout, "waitTimeout can't be null"); Preconditions.checkNotNull(idleTimeout, "idleTimeout can't be null"); if (waitTimeout.isZero() && idleTimeout.isZero()) { return innerObserver; } WatchdogStream<ResponseT> stream = new WatchdogStream<>(innerObserver, waitTimeout, idleTimeout); openStreams.put(stream, PRESENT); return stream; }
@Override public void run() { Iterator<Entry<WatchdogStream, Object>> it = openStreams.entrySet().iterator(); while (it.hasNext()) { WatchdogStream stream = it.next().getKey(); if (stream.cancelIfStale()) { it.remove(); } } }