Class OnSubscribeRange.RangeProducer

java.lang.Object
java.lang.Number
java.util.concurrent.atomic.AtomicLong
rx.internal.operators.OnSubscribeRange.RangeProducer
All Implemented Interfaces:
Serializable, Producer
Enclosing class:
OnSubscribeRange

static final class OnSubscribeRange.RangeProducer extends AtomicLong implements Producer
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • childSubscriber

      private final Subscriber<? super Integer> childSubscriber
    • endOfRange

      private final int endOfRange
    • currentIndex

      private long currentIndex
  • Constructor Details

    • RangeProducer

      RangeProducer(Subscriber<? super Integer> childSubscriber, int startIndex, int endIndex)
  • Method Details

    • request

      public void request(long requestedAmount)
      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:
      requestedAmount - 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
    • slowpath

      void slowpath(long requestedAmount)
      Emits as many values as requested or remaining from the range, whichever is smaller.
    • fastpath

      void fastpath()
      Emits all remaining values without decrementing the requested amount.