-
- All Implemented Interfaces:
-
com.tds.common.reactor.Producer
public final class ProducerArbiter implements Producer
Producer that allows changing an underlying producer atomically and correctly resume with the accumulated requests.
-
-
Method Summary
Modifier and Type Method Description void
request(long n)
Request a certain maximum number of items from this Producer. void
produced(long n)
void
setProducer(Producer newProducer)
void
emitLoop()
-
-
Method Detail
-
request
void request(long n)
Request a certain maximum number of items from this Producer. This is a way of requesting backpressure.To disable backpressure, pass
{@code Long.MAX_VALUE}
to this method.Requests are additive but if a sequence of requests totals more than
{@code Long.MAX_VALUE}
then{@code Long.MAX_VALUE}
requests will be actioned and the extras may be ignored. Arriving at{@code Long.MAX_VALUE}
by addition of requests cannot be assumed to disable backpressure. For example,the code below may result in{@code Long.MAX_VALUE}
requests being actioned only.request(100); request(Long.MAX_VALUE-1);
- Parameters:
n
- the maximum number of items you want this Producer to produce, or{@code Long.MAX_VALUE}
if youwant the Producer to produce items at its own pace
-
produced
void produced(long n)
-
setProducer
void setProducer(Producer newProducer)
-
emitLoop
void emitLoop()
-
-
-
-