@Override public void cancel() { if (cancelled) { return; } cancelled = true; cancelWhen(); super.cancel(); }
@Override public void cancel() { if (!cancelled) { cancelled = true; drain(); } }
@Override public void onSubscribe(Subscription s) { arbiter.set(s); }
public final void producedOne() { if (unbounded) { return; } if (wip == 0 && WIP.compareAndSet(this, 0, 1)) { long r = requested; if (r != Long.MAX_VALUE) { r--; if (r < 0L) { SubscriptionHelper.reportMoreProduced(); r = 0; } requested = r; } else { unbounded = true; } if (WIP.decrementAndGet(this) == 0) { return; } drainLoop(); return; } BackpressureHelper.getAndAddCap(MISSED_PRODUCED, this, 1L); drain(); }
Subscription a = actual; if (a != null && shouldCancelCurrent()) { a.cancel(); drainLoop(); if (a != null && shouldCancelCurrent()) { a.cancel(); drain();
@Override public boolean isStarted() { return upstream() != null; }
final void drain() { if (WIP.getAndIncrement(this) != 0) { return; } drainLoop(); }
if (a != null && shouldCancelCurrent()) { a.cancel();
public final void produced(long n) { if (unbounded) { return; } if (wip == 0 && WIP.compareAndSet(this, 0, 1)) { long r = requested; if (r != Long.MAX_VALUE) { long u = r - n; if (u < 0L) { SubscriptionHelper.reportMoreProduced(); u = 0; } requested = u; } else { unbounded = true; } if (WIP.decrementAndGet(this) == 0) { return; } drainLoop(); return; } BackpressureHelper.getAndAddCap(MISSED_PRODUCED, this, n); drain(); }
@Override public final void request(long n) { if (SubscriptionHelper.validate(n)) { if (unbounded) { return; } if (wip == 0 && WIP.compareAndSet(this, 0, 1)) { long r = requested; if (r != Long.MAX_VALUE) { r = BackpressureHelper.addCap(r, n); requested = r; if (r == Long.MAX_VALUE) { unbounded = true; } } Subscription a = actual; if (WIP.decrementAndGet(this) != 0) { drainLoop(); } if (a != null) { a.request(n); } return; } BackpressureHelper.getAndAddCap(MISSED_REQUESTED, this, n); drain(); } }
void whenError(Throwable e) { cancelled = true; super.cancel(); subscriber.onError(e); }
@Override public void onSubscribe(Subscription s) { set(s); }
void whenError(Throwable e) { cancelled = true; super.cancel(); subscriber.onError(e); }
void whenComplete() { cancelled = true; super.cancel(); subscriber.onComplete(); } }
@Override public void cancel() { index = Long.MIN_VALUE; cancelTimeout(); super.cancel(); }
@Override public void cancel() { if (cancelled) { return; } cancelled = true; cancelWhen(); super.cancel(); }
void whenComplete() { cancelled = true; super.cancel(); subscriber.onComplete(); } }
void doError(long i, Throwable e) { if (index == i && INDEX.compareAndSet(this, i, Long.MIN_VALUE)) { super.cancel(); subscriber.onError(e); } }
void handleTimeout() { if (other == null) { super.cancel(); subscriber.onError(new TimeoutException()); } else { set(SubscriptionHelper.empty()); other.subscribe(new PublisherTimeoutOtherSubscriber<>(subscriber, this)); } }