@Override void onOverflow() { onError(new MissingBackpressureException("create: could not emit value due to lack of requests")); }
@Override public void onNext(T t) { if (!queue.offer(t)) { s.cancel(); MissingBackpressureException ex = new MissingBackpressureException("Buffer is full"); try { onOverflow.run(); } catch (Throwable e) { Exceptions.throwIfFatal(e); ex.initCause(e); } onError(ex); return; } if (outputFused) { actual.onNext(null); } else { drain(); } }
@Override public void onNext(T t) { if (sourceMode == FusedQueueSubscription.NONE) { if (!queue.offer(t)) { onError(new MissingBackpressureException()); return; } } parent.drain(); }
@Override public void onNext(T t) { if (done) { return; } if (sourceMode == FusedQueueSubscription.NONE && !queue.offer(t)) { s.get().cancel(); onError(new MissingBackpressureException()); return; } drain(); }
@Override public void onNext(T t) { if (done) { return; } if (fusionMode == NONE && !queue.offer(t)) { onError(new MissingBackpressureException("Queue is full?!")); return; } drain(); }
@Override public void onNext(CompletableSource t) { if (sourceFused == QueueDisposable.NONE) { if (!queue.offer(t)) { onError(new MissingBackpressureException()); return; } } drain(); }
@Override public void onNext(CompletableSource t) { if (sourceFused == QueueDisposable.NONE) { if (!queue.offer(t)) { onError(new MissingBackpressureException()); return; } } drain(); }
@Override public void onNext(CompletableSource t) { if (sourceFused == QueueDisposable.NONE) { if (!queue.offer(t)) { onError(new MissingBackpressureException()); return; } } drain(); }
@Override public void onNext(R t) { SwitchMapSubscriber<T, R> p = parent; if (index == p.unique) { if (fusionMode == FusedQueueSubscription.NONE && !queue.offer(t)) { onError(new MissingBackpressureException("Queue full?!")); return; } p.drain(); } }
@Override public void onNext(T t) { // we expect upstream to honor backpressure requests if (sourceMode == FusedQueueSubscription.NONE && !queue.offer(t)) { onError(new MissingBackpressureException("Prefetch queue is full?!")); return; } // since many things can happen concurrently, we have a common dispatch // loop to act on the current state serially dispatch(); } @Override
@Override public void run() { if (resource.get() != DisposableHelper.DISPOSED) { long r = get(); if (r != 0L) { actual.onNext(count++); BackpressureHelper.produced(this, 1); } else { actual.onError(new MissingBackpressureException("Can't deliver value " + count + " due to lack of requests")); DisposableHelper.dispose(resource); } } }
void emit() { T value = getAndSet(null); if (value != null) { long r = requested.get(); if (r != 0L) { actual.onNext(value); BackpressureHelper.produced(requested, 1); } else { cancel(); actual.onError(new MissingBackpressureException("Couldn't emit value due to lack of requests!")); } } }
void emit() { T value = getAndSet(null); if (value != null) { long r = requested.get(); if (r != 0L) { actual.onNext(value); BackpressureHelper.produced(requested, 1); } else { cancel(); actual.onError(new MissingBackpressureException("Couldn't emit value due to lack of requests!")); } } }
@Override public void onNext(T t) { if (!queue.offer(t)) { SubscriptionHelper.cancel(this); onError(new MissingBackpressureException("Queue full?!")); } else { signalConsumer(); } }
@Override public final void onNext(T t) { if (done) { return; } if (!queue.offer(t)) { s.cancel(); onError(new MissingBackpressureException("Queue is full?!")); return; } schedule(); }
@Override public void onNext(T t) { if (done) { return; } long r = get(); if (r != 0L) { actual.onNext(t); BackpressureHelper.produced(this, 1); } else { onError(new MissingBackpressureException("could not emit value due to lack of requests")); } }
@Override public void onNext(T t) { if (sourceMode == FusedQueueSubscription.NONE) { if (!queue.offer(t)) { s.cancel(); onError(new MissingBackpressureException("Queue is full?")); return; } } drain(); }
void emit(long idx, T value) { if (idx == index) { long r = get(); if (r != 0L) { actual.onNext(value); BackpressureHelper.produced(this, 1); } else { cancel(); actual.onError(new MissingBackpressureException("Could not deliver value due to lack of requests")); } } }
@Override public final void onNext(T t) { if (done) { return; } if (sourceMode == ASYNC) { trySchedule(); return; } if (!queue.offer(t)) { s.cancel(); error = new MissingBackpressureException("Queue is full?!"); done = true; } trySchedule(); }
@Override public void innerNext(InnerQueuedSubscriber<R> inner, R value) { if (inner.queue().offer(value)) { drain(); } else { inner.cancel(); innerError(inner, new MissingBackpressureException()); } }