Class FlowableReplay.ReplaySubscriber<T>
java.lang.Object
java.util.concurrent.atomic.AtomicReference<org.reactivestreams.Subscription>
io.reactivex.rxjava3.internal.operators.flowable.FlowableReplay.ReplaySubscriber<T>
- All Implemented Interfaces:
FlowableSubscriber<T>
,Disposable
,Serializable
,org.reactivestreams.Subscriber<T>
- Enclosing class:
FlowableReplay<T>
static final class FlowableReplay.ReplaySubscriber<T>
extends AtomicReference<org.reactivestreams.Subscription>
implements FlowableSubscriber<T>, Disposable
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) final FlowableReplay.ReplayBuffer
<T> Holds notifications from upstream.(package private) final AtomicReference
<FlowableReplay.ReplaySubscriber<T>> The current connection.(package private) boolean
Indicates this Subscriber received a terminal event.(package private) static final FlowableReplay.InnerSubscription[]
Indicates an empty array of inner subscriptions.(package private) final AtomicInteger
(package private) long
Tracks the amount already requested from the upstream.private static final long
(package private) final AtomicBoolean
Atomically changed from false to true by connect to make sure the connection is only performed by one thread.(package private) final AtomicReference
<FlowableReplay.InnerSubscription<T>[]> Tracks the subscribed InnerSubscriptions.(package private) static final FlowableReplay.InnerSubscription[]
Indicates a terminated ReplaySubscriber. -
Constructor Summary
ConstructorsConstructorDescriptionReplaySubscriber
(FlowableReplay.ReplayBuffer<T> buffer, AtomicReference<FlowableReplay.ReplaySubscriber<T>> current) -
Method Summary
Modifier and TypeMethodDescription(package private) boolean
add
(FlowableReplay.InnerSubscription<T> producer) Atomically try adding a new InnerSubscription to this Subscriber or return false if this Subscriber was terminated.void
dispose()
Dispose the resource, the operation should be idempotent.boolean
Returns true if this resource has been disposed.(package private) void
Coordinates the request amounts of various child Subscribers.void
void
void
void
onSubscribe
(org.reactivestreams.Subscription p) Implementors of this method should make sure everything that needs to be visible inSubscriber.onNext(Object)
is established before callingSubscription.request(long)
.(package private) void
Atomically removes the given InnerSubscription from the subscribers array.Methods inherited from class java.util.concurrent.atomic.AtomicReference
accumulateAndGet, compareAndExchange, compareAndExchangeAcquire, compareAndExchangeRelease, compareAndSet, get, getAcquire, getAndAccumulate, getAndSet, getAndUpdate, getOpaque, getPlain, lazySet, set, setOpaque, setPlain, setRelease, toString, updateAndGet, weakCompareAndSet, weakCompareAndSetAcquire, weakCompareAndSetPlain, weakCompareAndSetRelease, weakCompareAndSetVolatile
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
buffer
Holds notifications from upstream. -
done
boolean doneIndicates this Subscriber received a terminal event. -
EMPTY
Indicates an empty array of inner subscriptions. -
TERMINATED
Indicates a terminated ReplaySubscriber. -
subscribers
Tracks the subscribed InnerSubscriptions. -
shouldConnect
Atomically changed from false to true by connect to make sure the connection is only performed by one thread. -
management
-
requestedFromUpstream
long requestedFromUpstreamTracks the amount already requested from the upstream. -
current
The current connection.
-
-
Constructor Details
-
ReplaySubscriber
ReplaySubscriber(FlowableReplay.ReplayBuffer<T> buffer, AtomicReference<FlowableReplay.ReplaySubscriber<T>> current)
-
-
Method Details
-
isDisposed
public boolean isDisposed()Description copied from interface:Disposable
Returns true if this resource has been disposed.- Specified by:
isDisposed
in interfaceDisposable
- Returns:
- true if this resource has been disposed
-
dispose
public void dispose()Description copied from interface:Disposable
Dispose the resource, the operation should be idempotent.- Specified by:
dispose
in interfaceDisposable
-
add
Atomically try adding a new InnerSubscription to this Subscriber or return false if this Subscriber was terminated.- Parameters:
producer
- the producer to add- Returns:
- true if succeeded, false otherwise
-
remove
Atomically removes the given InnerSubscription from the subscribers array.- Parameters:
p
- the InnerSubscription to remove
-
onSubscribe
public void onSubscribe(org.reactivestreams.Subscription p) 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>
-
manageRequests
void manageRequests()Coordinates the request amounts of various child Subscribers.
-