@Override public final void onComplete() { if (hasValue) { complete(accumulator); } else { super.onComplete(); } }
@Override public final void onComplete() { if (hasValue) { complete(accumulator); } else { super.onComplete(); } }
@Override public void onSubscribe(Subscription s) { if (SubscriptionHelper.validate(this.s, s)) { this.s = s; this.qs = SubscriptionHelper.as(s); if (beforeDownstream()) { actual.onSubscribe(this); afterDownstream(); } } }
void reportError(Subscriber<?>[] subscribers, Throwable ex) { for (Subscriber<?> s : subscribers) { SubscriptionHelper.error(s, ex); } }
@Override public void cancel() { SubscriptionHelper.terminate(S, this); } }
@Override public boolean isTerminated() { return done || s == SubscriptionHelper.cancelled(); } }
public PublisherRetryWhenMainSubscriber(Subscriber<? super T> actual, Subscriber<Throwable> signaller, Publisher<? extends T> source) { super(actual); this.signaller = signaller; this.source = source; this.otherArbiter = new DeferredSubscription(); }
@Override public void cancel() { if (!cancelled) { cancelled = true; drain(); } }
@Override public void onError(Throwable t) { if (value == null) { error = t; } countDown(); } }
public static boolean validate(long n) { if (n < 0) { reportBadRequest(n); return false; } return true; }
@Override public int size() { return isEmpty() ? 0 : 1; } }
/** * Safely gate a subscriber subject concurrent Reactive Stream signals, thus serializing as a single sequence. * Note that serialization uses Thread Stealing and is vulnerable to cpu starving issues. * @param actual the subscriber to gate * @param <T> * @return a safe subscriber */ public static <T> Subscriber<T> create(Subscriber<T> actual){ return new SerializedSubscriber<>(actual); }
void reportError(Subscriber<?>[] subscribers, Throwable ex) { for (Subscriber<?> s : subscribers) { SubscriptionHelper.error(s, ex); } }
@Override public void cancel() { SubscriptionHelper.terminate(S, this); } }
@Override public void onComplete() { PublisherSkipUntilMainSubscriber<?> m = main; if (m.gate) { return; } m.gate = true; m.other = SubscriptionHelper.cancelled(); }
public PublisherRepeatWhenMainSubscriber(Subscriber<? super T> actual, Subscriber<Long> signaller, Publisher<? extends T> source) { super(actual); this.signaller = signaller; this.source = source; this.otherArbiter = new DeferredSubscription(); }
void reportError(Subscriber<?>[] subscribers, Throwable ex) { for (Subscriber<?> s : subscribers) { SubscriptionHelper.error(s, ex); } }
/** * Returns true if this arbiter has been cancelled. * * @return true if this arbiter has been cancelled */ @Override public final boolean isCancelled() { return s == SubscriptionHelper.cancelled(); }