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:
Serializable
,Producer
- Enclosing class:
OnSubscribeRange
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Subscriber
<? super Integer> private long
private final int
private static final long
-
Constructor Summary
ConstructorsConstructorDescriptionRangeProducer
(Subscriber<? super Integer> childSubscriber, int startIndex, int endIndex) -
Method Summary
Modifier and TypeMethodDescription(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
Methods inherited from class java.lang.Number
byteValue, shortValue
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
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, 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.
-