java.lang.Object
io.helidon.common.reactive.RequestedCounter
Requested event counter.
This utility class helps to safely track and process the back-pressure of
Flow.Subscribers.-
Constructor Summary
ConstructorsConstructorDescriptionCreate new request counter with strict mode off.RequestedCounter(boolean strictMode) Create new request counter, with strict mode true are all operations with counter protected by lock. -
Method Summary
Modifier and TypeMethodDescriptionlongget()Gets the current requested event counter value.voidincrement(long increment, Consumer<? super IllegalArgumentException> errorHandler) Increments safely a requested event counter to preventLong.MAX_VALUEoverflow.voidlock()Lock internal counter if strict mode is on.booleanTries to safely decrement a positive requested counter value, making sure the value does not drop below zero.voidunlock()Unlock internal counter.
-
Constructor Details
-
RequestedCounter
public RequestedCounter()Create new request counter with strict mode off. -
RequestedCounter
public RequestedCounter(boolean strictMode) Create new request counter, with strict mode true are all operations with counter protected by lock.- Parameters:
strictMode- true for turning strict mode on
-
-
Method Details
-
increment
Increments safely a requested event counter to preventLong.MAX_VALUEoverflow.- Parameters:
increment- amount of additional events to request.errorHandler- a consumer ofIllegalArgumentExceptionto process errors
-
tryDecrement
public boolean tryDecrement()Tries to safely decrement a positive requested counter value, making sure the value does not drop below zero.- Returns:
trueif the initial positive value has been decremented successfully,falsein case the initial counter value was already set to zero.
-
lock
public void lock()Lock internal counter if strict mode is on. -
unlock
public void unlock()Unlock internal counter. -
get
public long get()Gets the current requested event counter value.- Returns:
- current value of the requested event counter.
-