Class SerializedSubscriber<T>

java.lang.Object
io.reactivex.rxjava3.subscribers.SerializedSubscriber<T>
Type Parameters:
T - the value type
All Implemented Interfaces:
FlowableSubscriber<T>, org.reactivestreams.Subscriber<T>, org.reactivestreams.Subscription

public final class SerializedSubscriber<T> extends Object implements FlowableSubscriber<T>, org.reactivestreams.Subscription
Serializes access to the Subscriber.onNext(Object), Subscriber.onError(Throwable) and Subscriber.onComplete() methods of another Subscriber.

Note that onSubscribe(Subscription) is not serialized in respect of the other methods so make sure the onSubscribe is called with a non-null Subscription before any of the other methods are called.

The implementation assumes that the actual Subscriber's methods don't throw.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    (package private) final boolean
     
    (package private) boolean
     
    (package private) final org.reactivestreams.Subscriber<? super T>
     
    (package private) boolean
     
     
    (package private) static final int
     
    (package private) org.reactivestreams.Subscription
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    SerializedSubscriber(@NonNull org.reactivestreams.Subscriber<? super T> actual, boolean delayError)
    Construct a SerializedSubscriber by wrapping the given actual Subscriber and optionally delaying the errors till all regular values have been emitted from the internal buffer.
    SerializedSubscriber(org.reactivestreams.Subscriber<? super T> downstream)
    Construct a SerializedSubscriber by wrapping the given actual Subscriber.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
     
    (package private) void
     
    void
     
    void
     
    void
    onNext(T t)
     
    void
    onSubscribe(@NonNull org.reactivestreams.Subscription s)
    Implementors of this method should make sure everything that needs to be visible in Subscriber.onNext(Object) is established before calling Subscription.request(long).
    void
    request(long n)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • downstream

      final org.reactivestreams.Subscriber<? super T> downstream
    • delayError

      final boolean delayError
    • upstream

      org.reactivestreams.Subscription upstream
    • emitting

      boolean emitting
    • queue

    • done

      volatile boolean done
  • Constructor Details

    • SerializedSubscriber

      public SerializedSubscriber(org.reactivestreams.Subscriber<? super T> downstream)
      Construct a SerializedSubscriber by wrapping the given actual Subscriber.
      Parameters:
      downstream - the actual Subscriber, not null (not verified)
    • SerializedSubscriber

      public SerializedSubscriber(@NonNull @NonNull org.reactivestreams.Subscriber<? super T> actual, boolean delayError)
      Construct a SerializedSubscriber by wrapping the given actual Subscriber and optionally delaying the errors till all regular values have been emitted from the internal buffer.
      Parameters:
      actual - the actual Subscriber, not null (not verified)
      delayError - if true, errors are emitted after regular values have been emitted
  • Method Details

    • onSubscribe

      public void onSubscribe(@NonNull @NonNull 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 void onNext(@NonNull 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>
    • emitLoop

      void emitLoop()
    • 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