Package rx.internal.operators
Class OnSubscribeRange.RangeProducer
- java.lang.Object
-
- java.lang.Number
-
- java.util.concurrent.atomic.AtomicLong
-
- rx.internal.operators.OnSubscribeRange.RangeProducer
-
- All Implemented Interfaces:
java.io.Serializable
,Producer
- Enclosing class:
- OnSubscribeRange
static final class OnSubscribeRange.RangeProducer extends java.util.concurrent.atomic.AtomicLong implements Producer
-
-
Field Summary
Fields Modifier and Type Field Description private Subscriber<? super java.lang.Integer>
childSubscriber
private long
currentIndex
private int
endOfRange
private static long
serialVersionUID
-
Constructor Summary
Constructors Constructor Description RangeProducer(Subscriber<? super java.lang.Integer> childSubscriber, int startIndex, int endIndex)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) void
fastpath()
Emits all remaining values without decrementing the requested amount.void
request(long requestedAmount)
Request a certain maximum number of items from this Producer.(package private) void
slowpath(long requestedAmount)
Emits as many values as requested or remaining from the range, whichever is smaller.-
Methods inherited from class java.util.concurrent.atomic.AtomicLong
accumulateAndGet, addAndGet, compareAndExchange, compareAndExchangeAcquire, compareAndExchangeRelease, compareAndSet, decrementAndGet, doubleValue, floatValue, get, getAcquire, getAndAccumulate, getAndAdd, getAndDecrement, getAndIncrement, getAndSet, getAndUpdate, getOpaque, getPlain, incrementAndGet, intValue, lazySet, longValue, set, setOpaque, setPlain, setRelease, toString, updateAndGet, weakCompareAndSet, weakCompareAndSetAcquire, weakCompareAndSetPlain, weakCompareAndSetRelease, weakCompareAndSetVolatile
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
childSubscriber
private final Subscriber<? super java.lang.Integer> childSubscriber
-
endOfRange
private final int endOfRange
-
currentIndex
private long currentIndex
-
-
Constructor Detail
-
RangeProducer
RangeProducer(Subscriber<? super java.lang.Integer> childSubscriber, int startIndex, int endIndex)
-
-
Method Detail
-
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, passLong.MAX_VALUE
to this method.Requests are additive but if a sequence of requests totals more than
Long.MAX_VALUE
thenLong.MAX_VALUE
requests will be actioned and the extras may be ignored. Arriving atLong.MAX_VALUE
by addition of requests cannot be assumed to disable backpressure. For example, the code below may result inLong.MAX_VALUE
requests being actioned only.request(100); request(Long.MAX_VALUE-1);
-
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.
-
-