-
- 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 voidrequest(long n)Request a certain maximum number of items from this Producer. voidproduced(long n)voidsetProducer(Producer newProducer)voidemitLoop()-
-
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()
-
-
-
-