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 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
FieldsModifier and TypeFieldDescription(package private) final boolean
(package private) boolean
(package private) final org.reactivestreams.Subscriber
<? super T> (package private) boolean
(package private) AppendOnlyLinkedArrayList
<Object> (package private) static final int
(package private) org.reactivestreams.Subscription
-
Constructor Summary
ConstructorsConstructorDescriptionSerializedSubscriber
(@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
Modifier and TypeMethodDescriptionvoid
cancel()
(package private) void
emitLoop()
void
void
void
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 Details
-
downstream
-
delayError
final boolean delayError -
QUEUE_LINK_SIZE
static final int QUEUE_LINK_SIZE- See Also:
-
upstream
org.reactivestreams.Subscription upstream -
emitting
boolean emitting -
queue
AppendOnlyLinkedArrayList<Object> queue -
done
volatile boolean done
-
-
Constructor Details
-
SerializedSubscriber
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 Details
-
onSubscribe
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
- Specified by:
onNext
in interfaceorg.reactivestreams.Subscriber<T>
-
onError
- 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
-