public static boolean validate(Subscription current, Subscription next) { Objects.requireNonNull(next, "Subscription cannot be null"); if (current != null) { next.cancel(); reportSubscriptionSet(); return false; } return true; }
@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); } }
void setOther(Subscription s) { if (!OTHER.compareAndSet(this, null, s)) { s.cancel(); if (other != SubscriptionHelper.cancelled()) { SubscriptionHelper.reportSubscriptionSet(); } } }
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 onSubscribe(Subscription s) { if (!MAIN.compareAndSet(this, null, s)) { s.cancel(); if (main != SubscriptionHelper.cancelled()) { SubscriptionHelper.reportSubscriptionSet(); } } else { actual.onSubscribe(this); } }
/** * Sets the Subscription once but does not request anything. * @param s the Subscription to set * @return true if successful, false if the current subscription is not null */ protected final boolean setWithoutRequesting(Subscription s) { Objects.requireNonNull(s, "s"); for (;;) { Subscription a = this.s; if (a == SubscriptionHelper.cancelled()) { s.cancel(); return false; } if (a != null) { s.cancel(); SubscriptionHelper.reportSubscriptionSet(); return false; } if (S.compareAndSet(this, null, s)) { return true; } } }
@Override public void onSubscribe(Subscription s) { Subscription a = this.s; if (a == SubscriptionHelper.cancelled()) { s.cancel(); } if (a != null) { s.cancel(); SubscriptionHelper.reportSubscriptionSet(); return; } if (S.compareAndSet(this, null, s)) { s.request(bufferSize); return; } a = this.s; if (a != SubscriptionHelper.cancelled()) { s.cancel(); SubscriptionHelper.reportSubscriptionSet(); return; } }
SubscriptionHelper.reportSubscriptionSet(); return false; SubscriptionHelper.reportSubscriptionSet(); return false;
reportSubscriptionSet(); return false; reportSubscriptionSet(); return false;