Package rx.subjects

Class ReplaySubject.ReplayProducer<T>

Type Parameters:
T - the value type
All Implemented Interfaces:
Serializable, Producer, Subscription
Enclosing class:
ReplaySubject<T>

static final class ReplaySubject.ReplayProducer<T> extends AtomicInteger implements Producer, Subscription
A producer and subscription implementation that tracks the current replay position of a particular subscriber.

The this holds the current work-in-progress indicator used by serializing replays.

  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • actual

      final Subscriber<? super T> actual
      The wrapped Subscriber instance.
    • requested

      final AtomicLong requested
      Holds the current requested amount.
    • state

      Holds the back-reference to the replay state object.
    • index

      int index
      Unbounded buffer.drain() uses this field to remember the absolute index of values replayed to this Subscriber.
    • tailIndex

      int tailIndex
      Unbounded buffer.drain() uses this index within its current node to indicate how many items were replayed from that particular node so far.
    • node

      Object node
      Stores the current replay node of the buffer to be used by buffer.drain().
  • Constructor Details

  • Method Details

    • unsubscribe

      public void unsubscribe()
      Description copied from interface: Subscription
      Stops the receipt of notifications on the Subscriber that was registered when this Subscription was received.

      This allows unregistering an Subscriber before it has finished receiving all events (i.e. before onCompleted is called).

      Specified by:
      unsubscribe in interface Subscription
    • isUnsubscribed

      public boolean isUnsubscribed()
      Description copied from interface: Subscription
      Indicates whether this Subscription is currently unsubscribed.
      Specified by:
      isUnsubscribed in interface Subscription
      Returns:
      true if this Subscription is currently unsubscribed, false otherwise
    • request

      public void request(long n)
      Description copied from interface: Producer
      Request a certain maximum number of items from this Producer. This is a way of requesting backpressure. To disable backpressure, pass Long.MAX_VALUE to this method.

      Requests are additive but if a sequence of requests totals more than Long.MAX_VALUE then Long.MAX_VALUE requests will be actioned and the extras may be ignored. Arriving at Long.MAX_VALUE by addition of requests cannot be assumed to disable backpressure. For example, the code below may result in Long.MAX_VALUE requests being actioned only.

       request(100);
       request(Long.MAX_VALUE-1);
       
      Specified by:
      request in interface Producer
      Parameters:
      n - the maximum number of items you want this Producer to produce, or Long.MAX_VALUE if you want the Producer to produce items at its own pace