/** 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; }