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>
buffer
Holds notifications from upstream.(package private) java.util.concurrent.atomic.AtomicReference<ObservableReplay.ReplayObserver<T>>
current
The current connection.(package private) boolean
done
Indicates this Observer received a terminal event.(package private) static ObservableReplay.InnerDisposable[]
EMPTY
Indicates an empty array of inner observers.(package private) java.util.concurrent.atomic.AtomicReference<ObservableReplay.InnerDisposable[]>
observers
Tracks the subscribed observers.private static long
serialVersionUID
(package private) 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.(package private) static ObservableReplay.InnerDisposable[]
TERMINATED
Indicates 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) 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
isDisposed()
Returns true if this resource has been disposed.void
onComplete()
Notifies theObserver
that theObservable
has finished sending push-based notifications.void
onError(java.lang.Throwable e)
Notifies theObserver
that theObservable
has experienced an error condition.void
onNext(T t)
Provides theObserver
with a new item to observe.void
onSubscribe(Disposable p)
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
replayFinal()
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: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
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: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
public void onNext(T t)
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
public void onError(java.lang.Throwable e)
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.
-
-