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) booleanIndicates 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) longTracks the amount already requested from the upstream.private static final long(package private) final AtomicBooleanAtomically 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) booleanadd(FlowableReplay.InnerSubscription<T> producer) Atomically try adding a new InnerSubscription to this Subscriber or return false if this Subscriber was terminated.voiddispose()Dispose the resource, the operation should be idempotent.booleanReturns true if this resource has been disposed.(package private) voidCoordinates the request amounts of various child Subscribers.voidvoidvoidvoidonSubscribe(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) voidAtomically 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:DisposableReturns true if this resource has been disposed.- Specified by:
isDisposedin interfaceDisposable- Returns:
- true if this resource has been disposed
-
dispose
public void dispose()Description copied from interface:DisposableDispose the resource, the operation should be idempotent.- Specified by:
disposein 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:FlowableSubscriberImplementors 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:
onSubscribein interfaceFlowableSubscriber<T>- Specified by:
onSubscribein interfaceorg.reactivestreams.Subscriber<T>
-
onNext
- Specified by:
onNextin interfaceorg.reactivestreams.Subscriber<T>
-
onError
- Specified by:
onErrorin interfaceorg.reactivestreams.Subscriber<T>
-
onComplete
public void onComplete()- Specified by:
onCompletein interfaceorg.reactivestreams.Subscriber<T>
-
manageRequests
void manageRequests()Coordinates the request amounts of various child Subscribers.
-