@Override public boolean isTerminated() { return done || s == SubscriptionHelper.cancelled(); } }
@Override public void onComplete() { PublisherSkipUntilMainSubscriber<?> m = main; if (m.gate) { return; } m.gate = true; m.other = SubscriptionHelper.cancelled(); }
@Override public void onNext(U t) { if (main.gate) { return; } PublisherSkipUntilMainSubscriber<?> m = main; m.other.cancel(); m.gate = true; m.other = SubscriptionHelper.cancelled(); }
@Override public void onSubscribe(Subscription s) { if (!S.compareAndSet(this, null, s)) { s.cancel(); if (this.s != SubscriptionHelper.cancelled()) { SubscriptionHelper.reportSubscriptionSet(); } } else { s.request(Long.MAX_VALUE); } }
@Override public void onSubscribe(Subscription s) { if (!MAIN.compareAndSet(this, null, s)) { s.cancel(); if (main != SubscriptionHelper.cancelled()) { SubscriptionHelper.reportSubscriptionSet(); } return; } s.request(Long.MAX_VALUE); }
void setOther(Subscription s) { if (!OTHER.compareAndSet(this, null, s)) { s.cancel(); if (other != SubscriptionHelper.cancelled()) { SubscriptionHelper.reportSubscriptionSet(); } return; } s.request(Long.MAX_VALUE); }
void setOther(Subscription s) { if (!OTHER.compareAndSet(this, null, s)) { s.cancel(); if (other != SubscriptionHelper.cancelled()) { SubscriptionHelper.reportSubscriptionSet(); } } }
@Override public void onSubscribe(Subscription s) { if (!MAIN.compareAndSet(this, null, s)) { s.cancel(); if (main != SubscriptionHelper.cancelled()) { SubscriptionHelper.reportSubscriptionSet(); } } else { actual.onSubscribe(this); } }
@Override public void onError(Throwable t) { if (main == null) { if (MAIN.compareAndSet(this, null, SubscriptionHelper.cancelled())) { SubscriptionHelper.error(actual, t); return; } } cancel(); actual.onError(t); }
void otherError(Throwable t) { if (main == null) { if (MAIN.compareAndSet(this, null, SubscriptionHelper.cancelled())) { cancelMain(); SubscriptionHelper.error(actual, t); return; } } cancelMain(); otherValue = null; actual.onError(t); }