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,java.io.Serializable
- Enclosing class:
- ObservableReplay<T>
static final class ObservableReplay.ReplayObserver<T> extends java.util.concurrent.atomic.AtomicReference<Disposable> implements Observer<T>, Disposable
-
-
Field Summary
Fields Modifier and Type Field Description (package private) ObservableReplay.ReplayBuffer<T>bufferHolds notifications from upstream.(package private) java.util.concurrent.atomic.AtomicReference<ObservableReplay.ReplayObserver<T>>currentThe current connection.(package private) booleandoneIndicates this Observer received a terminal event.(package private) static ObservableReplay.InnerDisposable[]EMPTYIndicates an empty array of inner observers.(package private) java.util.concurrent.atomic.AtomicReference<ObservableReplay.InnerDisposable[]>observersTracks the subscribed observers.private static longserialVersionUID(package private) java.util.concurrent.atomic.AtomicBooleanshouldConnectAtomically changed from false to true by connect to make sure the connection is only performed by one thread.(package private) static ObservableReplay.InnerDisposable[]TERMINATEDIndicates a terminated ReplayObserver.
-
Constructor Summary
Constructors Constructor Description ReplayObserver(ObservableReplay.ReplayBuffer<T> buffer, java.util.concurrent.atomic.AtomicReference<ObservableReplay.ReplayObserver<T>> current)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (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.booleanisDisposed()Returns true if this resource has been disposed.voidonComplete()Notifies theObserverthat theObservablehas finished sending push-based notifications.voidonError(java.lang.Throwable e)Notifies theObserverthat theObservablehas experienced an error condition.voidonNext(T t)Provides theObserverwith a new item to observe.voidonSubscribe(Disposable p)Provides 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) voidreplayFinal()Tries 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 Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
buffer
final ObservableReplay.ReplayBuffer<T> buffer
Holds notifications from upstream.
-
done
boolean done
Indicates this Observer received a terminal event.
-
EMPTY
static final ObservableReplay.InnerDisposable[] EMPTY
Indicates an empty array of inner observers.
-
TERMINATED
static final ObservableReplay.InnerDisposable[] TERMINATED
Indicates a terminated ReplayObserver.
-
observers
final java.util.concurrent.atomic.AtomicReference<ObservableReplay.InnerDisposable[]> observers
Tracks the subscribed observers.
-
shouldConnect
final java.util.concurrent.atomic.AtomicBoolean shouldConnect
Atomically changed from false to true by connect to make sure the connection is only performed by one thread.
-
current
final java.util.concurrent.atomic.AtomicReference<ObservableReplay.ReplayObserver<T>> current
The current connection.
-
-
Constructor Detail
-
ReplayObserver
ReplayObserver(ObservableReplay.ReplayBuffer<T> buffer, java.util.concurrent.atomic.AtomicReference<ObservableReplay.ReplayObserver<T>> current)
-
-
Method Detail
-
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
boolean add(ObservableReplay.InnerDisposable<T> producer)
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
void remove(ObservableReplay.InnerDisposable<T> producer)
Atomically removes the given InnerDisposable from the observers array.- Parameters:
producer- the producer to remove
-
onSubscribe
public void onSubscribe(Disposable p)
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
public void onNext(T t)
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
public void onError(java.lang.Throwable e)
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.
-
-