Package io.reactivex.rxjava3.subscribers
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 java.lang.Object implements FlowableSubscriber<T>, org.reactivestreams.Subscription
Serializes access to theSubscriber.onNext(Object)
,Subscriber.onError(Throwable)
andSubscriber.onComplete()
methods of anotherSubscriber
.Note that
onSubscribe(Subscription)
is not serialized in respect of the other methods so make sure theonSubscribe
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) boolean
delayError
(package private) boolean
done
(package private) org.reactivestreams.Subscriber<? super T>
downstream
(package private) boolean
emitting
(package private) AppendOnlyLinkedArrayList<java.lang.Object>
queue
(package private) static int
QUEUE_LINK_SIZE
(package private) org.reactivestreams.Subscription
upstream
-
Constructor Summary
Constructors Constructor Description SerializedSubscriber(@NonNull org.reactivestreams.Subscriber<? super T> actual, boolean delayError)
Construct aSerializedSubscriber
by wrapping the given actualSubscriber
and optionally delaying the errors till all regular values have been emitted from the internal buffer.SerializedSubscriber(org.reactivestreams.Subscriber<? super T> downstream)
Construct aSerializedSubscriber
by wrapping the given actualSubscriber
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
cancel()
(package private) void
emitLoop()
void
onComplete()
void
onError(java.lang.Throwable t)
void
onNext(T t)
void
onSubscribe(@NonNull org.reactivestreams.Subscription s)
Implementors of this method should make sure everything that needs to be visible inSubscriber.onNext(Object)
is established before callingSubscription.request(long)
.void
request(long n)
-
-
-
Field Detail
-
downstream
final org.reactivestreams.Subscriber<? super T> downstream
-
delayError
final boolean delayError
-
QUEUE_LINK_SIZE
static final int QUEUE_LINK_SIZE
- See Also:
- Constant Field Values
-
upstream
org.reactivestreams.Subscription upstream
-
emitting
boolean emitting
-
queue
AppendOnlyLinkedArrayList<java.lang.Object> queue
-
done
volatile boolean done
-
-
Constructor Detail
-
SerializedSubscriber
public SerializedSubscriber(org.reactivestreams.Subscriber<? super T> downstream)
Construct aSerializedSubscriber
by wrapping the given actualSubscriber
.- Parameters:
downstream
- the actualSubscriber
, not null (not verified)
-
SerializedSubscriber
public SerializedSubscriber(@NonNull @NonNull org.reactivestreams.Subscriber<? super T> actual, boolean delayError)
Construct aSerializedSubscriber
by wrapping the given actualSubscriber
and optionally delaying the errors till all regular values have been emitted from the internal buffer.- Parameters:
actual
- the actualSubscriber
, notnull
(not verified)delayError
- iftrue
, errors are emitted after regular values have been emitted
-
-
Method Detail
-
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 inSubscriber.onNext(Object)
is established before callingSubscription.request(long)
. In practice this means no initialization should happen after therequest()
call and additional behavior is thread safe in respect toonNext
.- Specified by:
onSubscribe
in interfaceFlowableSubscriber<T>
- Specified by:
onSubscribe
in interfaceorg.reactivestreams.Subscriber<T>
-
onNext
public void onNext(@NonNull T t)
- Specified by:
onNext
in interfaceorg.reactivestreams.Subscriber<T>
-
onError
public void onError(java.lang.Throwable t)
- Specified by:
onError
in interfaceorg.reactivestreams.Subscriber<T>
-
onComplete
public void onComplete()
- Specified by:
onComplete
in interfaceorg.reactivestreams.Subscriber<T>
-
emitLoop
void emitLoop()
-
request
public void request(long n)
- Specified by:
request
in interfaceorg.reactivestreams.Subscription
-
cancel
public void cancel()
- Specified by:
cancel
in interfaceorg.reactivestreams.Subscription
-
-