@Override public boolean isCancelled() { return _result.isCancelled(); }
@Override public boolean isCancelled() { return _next.isCancelled(); }
@Override public boolean isCancelled() { return _result.isCancelled(); }
private void cleanSubscribers() { int size = _subscriberList.size(); for (int i = size - 1; i >= 0; i--) { ResultStream<T> subscriber = _subscriberList.get(i); if (subscriber.isCancelled()) { _subscriberList.remove(i); } } } }
@Override public boolean isCancelled() { return getNext().isCancelled(); }
@Override public boolean isCancelled() { return next().isCancelled(); }
@Override public boolean isCancelled() { return next().isCancelled(); }
@Override public void subscribe(ResultStream<T> subscriber) { Objects.requireNonNull(subscriber); if (subscriber.isCancelled()) { throw new ServiceException(L.l("Subscriber is closed")); } _subscriberList.add(subscriber); cleanSubscribers(); }
@Override public void consume(ResultStream<T> subscriber) { Objects.requireNonNull(subscriber); if (subscriber.isCancelled()) { throw new ServiceException(L.l("Subscriber is closed")); } _subscriberList.add(subscriber); cleanSubscribers(); }
@Override public void publish(T message) { int size = _subscriberList.size(); for (int i = 0; i < size; i++) { ResultStream<T> subscriber = _subscriberList.get(i); if (subscriber.isCancelled()) { _subscriberList.remove(i); size--; i--; continue; } try { subscriber.accept(message); } catch (Throwable e) { subscriber.fail(e); _subscriberList.remove(i); i--; size--; } } }
/** * Uses a {@code Supplier} to generate set of values and calls * method {@code complete()} on itself. * * A first null value returned by the {@code get()} method of the {@code Supplier} * completes accept() loop and calls complete() on the instance of {@code ResultStream}. * * @param supplier supplies value to be accepted by the instance of {@code ResultStream} */ default void generate(Supplier<T> supplier) { T value; while (! isCancelled() && (value = supplier.get()) != null) { accept(value); } ok(); }
@Override public void offerQueue(long timeout) { _isSent = true; ResultStream<T> next = getNext(); if (next.isCancelled()) { return; } if (next.isFuture()) { if (_exn != null) { next.fail(_exn); } else { next.acceptFuture(_resultNext, _values, _isComplete); } } else { super.offerQueue(timeout); } }
if (next.isCancelled()) { return;