Class FlowableObserveOn.BaseObserveOnSubscriber<T>

java.lang.Object
java.lang.Number
java.util.concurrent.atomic.AtomicInteger
io.reactivex.rxjava3.internal.subscriptions.BasicIntQueueSubscription<T>
io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn.BaseObserveOnSubscriber<T>
All Implemented Interfaces:
FlowableSubscriber<T>, QueueFuseable<T>, QueueSubscription<T>, SimpleQueue<T>, Serializable, Runnable, org.reactivestreams.Subscriber<T>, org.reactivestreams.Subscription
Direct Known Subclasses:
FlowableObserveOn.ObserveOnConditionalSubscriber, FlowableObserveOn.ObserveOnSubscriber
Enclosing class:
FlowableObserveOn<T>

abstract static class FlowableObserveOn.BaseObserveOnSubscriber<T> extends BasicIntQueueSubscription<T> implements FlowableSubscriber<T>, Runnable
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • worker

      final Scheduler.Worker worker
    • delayError

      final boolean delayError
    • prefetch

      final int prefetch
    • limit

      final int limit
    • requested

      final AtomicLong requested
    • upstream

      org.reactivestreams.Subscription upstream
    • queue

      SimpleQueue<T> queue
    • cancelled

      volatile boolean cancelled
    • done

      volatile boolean done
    • error

      Throwable error
    • sourceMode

      int sourceMode
    • produced

      long produced
    • outputFused

      boolean outputFused
  • Constructor Details

    • BaseObserveOnSubscriber

      BaseObserveOnSubscriber(Scheduler.Worker worker, boolean delayError, int prefetch)
  • Method Details

    • onNext

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

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

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

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

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

      final void trySchedule()
    • run

      public final void run()
      Specified by:
      run in interface Runnable
    • runBackfused

      abstract void runBackfused()
    • runSync

      abstract void runSync()
    • runAsync

      abstract void runAsync()
    • checkTerminated

      final boolean checkTerminated(boolean d, boolean empty, org.reactivestreams.Subscriber<?> a)
    • requestFusion

      public final int requestFusion(int requestedMode)
      Description copied from interface: QueueFuseable
      Request a fusion mode from the upstream.

      This should be called before onSubscribe returns.

      Calling this method multiple times or after onSubscribe finished is not allowed and may result in undefined behavior.

      Specified by:
      requestFusion in interface QueueFuseable<T>
      Parameters:
      requestedMode - the requested fusion mode, allowed values are QueueFuseable.SYNC, QueueFuseable.ASYNC, QueueFuseable.ANY combined with QueueFuseable.BOUNDARY (e.g., requestFusion(SYNC | BOUNDARY)).
      Returns:
      the established fusion mode: QueueFuseable.NONE, QueueFuseable.SYNC, QueueFuseable.ASYNC.
    • clear

      public final void clear()
      Description copied from interface: SimpleQueue
      Removes all enqueued items from this queue.
      Specified by:
      clear in interface SimpleQueue<T>
    • isEmpty

      public final boolean isEmpty()
      Description copied from interface: SimpleQueue
      Returns true if the queue is empty.

      Note however that due to potential fused functions in SimpleQueue.poll() it is possible this method returns false but then poll() returns null because the fused function swallowed the available item(s).

      Specified by:
      isEmpty in interface SimpleQueue<T>
      Returns:
      true if the queue is empty