Class AbstractBackpressureThrottlingSubscriber<T,R>

java.lang.Object
java.lang.Number
java.util.concurrent.atomic.AtomicInteger
io.reactivex.rxjava3.internal.operators.flowable.AbstractBackpressureThrottlingSubscriber<T,R>
Type Parameters:
T - the upstream value type
R - the downstream value type
All Implemented Interfaces:
FlowableSubscriber<T>, Serializable, org.reactivestreams.Subscriber<T>, org.reactivestreams.Subscription
Direct Known Subclasses:
FlowableOnBackpressureLatest.BackpressureLatestSubscriber, FlowableOnBackpressureReduce.BackpressureReduceSubscriber, FlowableOnBackpressureReduceWith.BackpressureReduceWithSubscriber

abstract class AbstractBackpressureThrottlingSubscriber<T,R> extends AtomicInteger implements FlowableSubscriber<T>, org.reactivestreams.Subscription
Abstract base class for operators that throttle excessive updates from upstream in case if downstream Subscriber is not ready to receive updates.
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • downstream

      final org.reactivestreams.Subscriber<? super R> downstream
    • upstream

      org.reactivestreams.Subscription upstream
    • done

      volatile boolean done
    • error

      Throwable error
    • cancelled

      volatile boolean cancelled
    • requested

      final AtomicLong requested
    • current

      final AtomicReference<R> current
  • Constructor Details

    • AbstractBackpressureThrottlingSubscriber

      AbstractBackpressureThrottlingSubscriber(org.reactivestreams.Subscriber<? super R> downstream)
  • Method Details

    • onSubscribe

      public void onSubscribe(org.reactivestreams.Subscription s)
      Description copied from interface: FlowableSubscriber
      Implementors of this method should make sure everything that needs to be visible in Subscriber.onNext(Object) is established before calling Subscription.request(long). In practice this means no initialization should happen after the request() call and additional behavior is thread safe in respect to onNext.
      Specified by:
      onSubscribe in interface FlowableSubscriber<T>
      Specified by:
      onSubscribe in interface org.reactivestreams.Subscriber<T>
    • onNext

      public abstract void onNext(T t)
      Specified by:
      onNext in interface org.reactivestreams.Subscriber<T>
    • onError

      public void onError(Throwable t)
      Specified by:
      onError in interface org.reactivestreams.Subscriber<T>
    • onComplete

      public void onComplete()
      Specified by:
      onComplete in interface org.reactivestreams.Subscriber<T>
    • request

      public void request(long n)
      Specified by:
      request in interface org.reactivestreams.Subscription
    • cancel

      public void cancel()
      Specified by:
      cancel in interface org.reactivestreams.Subscription
    • drain

      void drain()
    • checkTerminated

      boolean checkTerminated(boolean d, boolean empty, org.reactivestreams.Subscriber<?> a, AtomicReference<R> q)