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>, Serializable
Direct Known Subclasses:
ObservableReplay.SizeAndTimeBoundReplayBuffer, ObservableReplay.SizeBoundReplayBuffer
Enclosing class:
ObservableReplay<T>

abstract static class ObservableReplay.BoundedReplayBuffer<T> extends 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 Details

  • Constructor Details

    • BoundedReplayBuffer

      BoundedReplayBuffer(boolean eagerTruncate)
  • Method Details

    • 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.ReplayBuffer
      Adds a regular value to the buffer.
      Specified by:
      next in interface ObservableReplay.ReplayBuffer<T>
      Parameters:
      value - the value to be stored in the buffer
    • error

      public final void error(Throwable e)
      Description copied from interface: ObservableReplay.ReplayBuffer
      Adds a terminal exception to the buffer.
      Specified by:
      error in interface ObservableReplay.ReplayBuffer<T>
      Parameters:
      e - the error to be stored in the buffer
    • complete

      public final void complete()
      Description copied from interface: ObservableReplay.ReplayBuffer
      Adds a completion event to the buffer.
      Specified by:
      complete in interface ObservableReplay.ReplayBuffer<T>
    • replay

      public final void replay(ObservableReplay.InnerDisposable<T> output)
      Description copied from interface: ObservableReplay.ReplayBuffer
      Tries 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:
      replay in interface ObservableReplay.ReplayBuffer<T>
      Parameters:
      output - the receiver of the buffered events
    • enterTransform

      Object enterTransform(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

      Object leaveTransform(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(Collection<? super T> output)
    • hasError

      boolean hasError()
    • hasCompleted

      boolean hasCompleted()
    • getHead