Class ObservableReplay.BoundedReplayBuffer<T>
- java.lang.Object
-
- java.util.concurrent.atomic.AtomicReference<ObservableReplay.Node>
-
- io.reactivex.rxjava3.internal.operators.observable.ObservableReplay.BoundedReplayBuffer<T>
-
- Type Parameters:
T- the value type
- All Implemented Interfaces:
ObservableReplay.ReplayBuffer<T>,java.io.Serializable
- Direct Known Subclasses:
ObservableReplay.SizeAndTimeBoundReplayBuffer,ObservableReplay.SizeBoundReplayBuffer
- Enclosing class:
- ObservableReplay<T>
abstract static class ObservableReplay.BoundedReplayBuffer<T> extends java.util.concurrent.atomic.AtomicReference<ObservableReplay.Node> implements ObservableReplay.ReplayBuffer<T>
Base class for bounded buffering with options to specify an enter and leave transforms and custom truncation behavior.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) booleaneagerTruncateprivate static longserialVersionUID(package private) intsize(package private) ObservableReplay.Nodetail
-
Constructor Summary
Constructors Constructor Description BoundedReplayBuffer(boolean eagerTruncate)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description (package private) voidaddLast(ObservableReplay.Node n)Add a new node to the linked list.(package private) voidcollect(java.util.Collection<? super T> output)voidcomplete()Adds a completion event to the buffer.(package private) java.lang.ObjectenterTransform(java.lang.Object value)Override this to wrap the NotificationLite object into a container to be used later by truncate.voiderror(java.lang.Throwable e)Adds a terminal exception to the buffer.(package private) ObservableReplay.NodegetHead()(package private) booleanhasCompleted()(package private) booleanhasError()(package private) java.lang.ObjectleaveTransform(java.lang.Object value)Override this to unwrap the transformed value into a NotificationLite object.voidnext(T value)Adds a regular value to the buffer.(package private) voidremoveFirst()Remove the first node from the linked list.(package private) voidremoveSome(int n)voidreplay(ObservableReplay.InnerDisposable<T> output)Tries to replay the buffered values to the subscriber inside the output if there is new value and requests available at the same time.(package private) voidsetFirst(ObservableReplay.Node n)Arranges the given node is the new head from now on.(package private) voidtrimHead()(package private) abstract voidtruncate()Override this method to truncate a non-terminated buffer based on its current properties.(package private) voidtruncateFinal()Override this method to truncate a terminated buffer based on its properties (i.e., truncate but the very last node).-
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
-
tail
ObservableReplay.Node tail
-
size
int size
-
eagerTruncate
final boolean eagerTruncate
-
-
Method Detail
-
addLast
final void addLast(ObservableReplay.Node n)
Add a new node to the linked list.- Parameters:
n- the Node instance to add as last
-
removeFirst
final void removeFirst()
Remove the first node from the linked list.
-
trimHead
final void trimHead()
-
removeSome
final void removeSome(int n)
-
setFirst
final void setFirst(ObservableReplay.Node n)
Arranges the given node is the new head from now on.- Parameters:
n- the Node instance to set as first
-
next
public final void next(T value)
Description copied from interface:ObservableReplay.ReplayBufferAdds a regular value to the buffer.- Specified by:
nextin interfaceObservableReplay.ReplayBuffer<T>- Parameters:
value- the value to be stored in the buffer
-
error
public final void error(java.lang.Throwable e)
Description copied from interface:ObservableReplay.ReplayBufferAdds a terminal exception to the buffer.- Specified by:
errorin interfaceObservableReplay.ReplayBuffer<T>- Parameters:
e- the error to be stored in the buffer
-
complete
public final void complete()
Description copied from interface:ObservableReplay.ReplayBufferAdds a completion event to the buffer.- Specified by:
completein interfaceObservableReplay.ReplayBuffer<T>
-
replay
public final void replay(ObservableReplay.InnerDisposable<T> output)
Description copied from interface:ObservableReplay.ReplayBufferTries to replay the buffered values to the subscriber inside the output if there is new value and requests available at the same time.- Specified by:
replayin interfaceObservableReplay.ReplayBuffer<T>- Parameters:
output- the receiver of the buffered events
-
enterTransform
java.lang.Object enterTransform(java.lang.Object value)
Override this to wrap the NotificationLite object into a container to be used later by truncate.- Parameters:
value- the value to transform into the internal representation- Returns:
- the transformed value
-
leaveTransform
java.lang.Object leaveTransform(java.lang.Object value)
Override this to unwrap the transformed value into a NotificationLite object.- Parameters:
value- the value in the internal representation to transform- Returns:
- the transformed value
-
truncate
abstract void truncate()
Override this method to truncate a non-terminated buffer based on its current properties.
-
truncateFinal
void truncateFinal()
Override this method to truncate a terminated buffer based on its properties (i.e., truncate but the very last node).
-
collect
final void collect(java.util.Collection<? super T> output)
-
hasError
boolean hasError()
-
hasCompleted
boolean hasCompleted()
-
getHead
ObservableReplay.Node getHead()
-
-