Class ObservableReplay.ReplayObserver<T>
java.lang.Object
java.util.concurrent.atomic.AtomicReference<Disposable>
io.reactivex.rxjava3.internal.operators.observable.ObservableReplay.ReplayObserver<T>
- All Implemented Interfaces:
Observer<T>,Disposable,Serializable
- Enclosing class:
ObservableReplay<T>
static final class ObservableReplay.ReplayObserver<T>
extends AtomicReference<Disposable>
implements Observer<T>, Disposable
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) final ObservableReplay.ReplayBuffer<T> Holds notifications from upstream.(package private) final AtomicReference<ObservableReplay.ReplayObserver<T>> The current connection.(package private) booleanIndicates this Observer received a terminal event.(package private) static final ObservableReplay.InnerDisposable[]Indicates an empty array of inner observers.(package private) final AtomicReference<ObservableReplay.InnerDisposable[]> Tracks the subscribed observers.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) static final ObservableReplay.InnerDisposable[]Indicates a terminated ReplayObserver. -
Constructor Summary
ConstructorsConstructorDescriptionReplayObserver(ObservableReplay.ReplayBuffer<T> buffer, AtomicReference<ObservableReplay.ReplayObserver<T>> current) -
Method Summary
Modifier and TypeMethodDescription(package private) booleanadd(ObservableReplay.InnerDisposable<T> producer) Atomically try adding a new InnerDisposable to this Observer or return false if this Observer was terminated.voiddispose()Dispose the resource, the operation should be idempotent.booleanReturns true if this resource has been disposed.voidNotifies theObserverthat theObservablehas finished sending push-based notifications.voidNotifies theObserverthat theObservablehas experienced an error condition.voidProvides theObserverwith a new item to observe.voidProvides theObserverwith the means of cancelling (disposing) the connection (channel) with theObservablein both synchronous (from withinObserver.onNext(Object)) and asynchronous manner.(package private) voidremove(ObservableReplay.InnerDisposable<T> producer) Atomically removes the given InnerDisposable from the observers array.(package private) voidreplay()Tries to replay the buffer contents to all known observers.(package private) voidTries to replay the buffer contents to all known observers.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 Observer received a terminal event. -
EMPTY
Indicates an empty array of inner observers. -
TERMINATED
Indicates a terminated ReplayObserver. -
observers
Tracks the subscribed observers. -
shouldConnect
Atomically changed from false to true by connect to make sure the connection is only performed by one thread. -
current
The current connection.
-
-
Constructor Details
-
ReplayObserver
ReplayObserver(ObservableReplay.ReplayBuffer<T> buffer, AtomicReference<ObservableReplay.ReplayObserver<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 InnerDisposable to this Observer or return false if this Observer was terminated.- Parameters:
producer- the producer to add- Returns:
- true if succeeded, false otherwise
-
remove
Atomically removes the given InnerDisposable from the observers array.- Parameters:
producer- the producer to remove
-
onSubscribe
Description copied from interface:ObserverProvides theObserverwith the means of cancelling (disposing) the connection (channel) with theObservablein both synchronous (from withinObserver.onNext(Object)) and asynchronous manner.- Specified by:
onSubscribein interfaceObserver<T>- Parameters:
p- theDisposableinstance whoseDisposable.dispose()can be called anytime to cancel the connection
-
onNext
Description copied from interface:ObserverProvides theObserverwith a new item to observe.The
Observablemay call this method 0 or more times.The
Observablewill not call this method again after it calls eitherObserver.onComplete()orObserver.onError(java.lang.Throwable). -
onError
Description copied from interface:ObserverNotifies theObserverthat theObservablehas experienced an error condition.If the
Observablecalls this method, it will not thereafter callObserver.onNext(T)orObserver.onComplete(). -
onComplete
public void onComplete()Description copied from interface:ObserverNotifies theObserverthat theObservablehas finished sending push-based notifications.The
Observablewill not call this method if it callsObserver.onError(java.lang.Throwable).- Specified by:
onCompletein interfaceObserver<T>
-
replay
void replay()Tries to replay the buffer contents to all known observers. -
replayFinal
void replayFinal()Tries to replay the buffer contents to all known observers.
-