@Experimental public final class BackpressureDrainManager extends AtomicLongimplements Producer
| Modifier and Type | Class and Description |
|---|---|
static interface |
BackpressureDrainManager
Interface representing the minimal callbacks required to operate the drain part of a backpressure system.
|
| Modifier and Type | Field and Description |
|---|---|
protected BackpressureDrainManager |
actual
The callbacks to manage the drain.
|
protected boolean |
emitting
Indicates if one is in emitting phase, guarded by this.
|
protected Throwable |
exception
Indicates an error state, barrier is provided via terminated.
|
protected boolean |
terminated
Indicates a terminal state.
|
| Constructor and Description |
|---|
BackpressureDrainManager(BackpressureDrainManager
Constructs a backpressure drain manager with 0 requesedCount, no terminal event and not emitting.
|
| Modifier and Type | Method and Description |
|---|---|
void |
drain()
Try to drain the "queued" elements and terminal events by considering the available and requested event counts.
|
boolean |
isTerminated()
Checks if a terminal state has been reached.
|
void |
request(long n)
Request a certain maximum number of items from this Producer.
|
void |
terminate()
Move into a terminal state.
|
void |
terminate(Throwable
Move into a terminal state with an exception.
|
void |
terminateAndDrain()
Move into a terminal state and drain.
|
void |
terminateAndDrain(Throwable
Move into a terminal state with an exception and drain.
|
accumulateAndGet, addAndGet, compareAndSet, decrementAndGet, doubleValue, floatValue, get, getAndAccumulate, getAndAdd, getAndDecrement, getAndIncrement, getAndSet, getAndUpdate, incrementAndGet, intValue, lazySet, longValue, set, toString, updateAndGet, weakCompareAndSetbyteValue, shortValueprotected boolean emitting
protected volatile boolean terminated
protected Throwableexception
protected final BackpressureDrainManager.BackpressureQueueCallback actual
public BackpressureDrainManager(BackpressureDrainManager.BackpressureQueueCallback actual)
actual - he queue callback to check for new element availability
public final boolean isTerminated()
public final void terminate()
public final void terminate(Throwableerror)
Serialized access is expected with respect to element emission.
error - the exception to deliver
public final void terminateAndDrain()
public final void terminateAndDrain(Throwableerror)
Serialized access is expected with respect to element emission.
error - the exception to deliver
public final void request(long n)
Producer
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);
public final void drain()