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) boolean
Indicates 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 AtomicBoolean
Atomically 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) boolean
add
(ObservableReplay.InnerDisposable<T> producer) Atomically try adding a new InnerDisposable to this Observer or return false if this Observer was terminated.void
dispose()
Dispose the resource, the operation should be idempotent.boolean
Returns true if this resource has been disposed.void
Notifies theObserver
that theObservable
has finished sending push-based notifications.void
Notifies theObserver
that theObservable
has experienced an error condition.void
Provides theObserver
with a new item to observe.void
Provides theObserver
with the means of cancelling (disposing) the connection (channel) with theObservable
in both synchronous (from withinObserver.onNext(Object)
) and asynchronous manner.(package private) void
remove
(ObservableReplay.InnerDisposable<T> producer) Atomically removes the given InnerDisposable from the observers array.(package private) void
replay()
Tries to replay the buffer contents to all known observers.(package private) void
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 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: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 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:Observer
Provides theObserver
with the means of cancelling (disposing) the connection (channel) with theObservable
in both synchronous (from withinObserver.onNext(Object)
) and asynchronous manner.- Specified by:
onSubscribe
in interfaceObserver<T>
- Parameters:
p
- theDisposable
instance whoseDisposable.dispose()
can be called anytime to cancel the connection
-
onNext
Description copied from interface:Observer
Provides theObserver
with a new item to observe.The
Observable
may call this method 0 or more times.The
Observable
will not call this method again after it calls eitherObserver.onComplete()
orObserver.onError(java.lang.Throwable)
. -
onError
Description copied from interface:Observer
Notifies theObserver
that theObservable
has experienced an error condition.If the
Observable
calls this method, it will not thereafter callObserver.onNext(T)
orObserver.onComplete()
. -
onComplete
public void onComplete()Description copied from interface:Observer
Notifies theObserver
that theObservable
has finished sending push-based notifications.The
Observable
will not call this method if it callsObserver.onError(java.lang.Throwable)
.- Specified by:
onComplete
in 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.
-