- java.lang.Object
-
- io.helidon.common.reactive.RequestedCounter
-
public class RequestedCounter extends Object
Requested event counter. This utility class helps to safely track and process the back-pressure ofFlow.Subscribers.
-
-
Constructor Summary
Constructors Constructor Description RequestedCounter()Create 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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description longget()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.booleantryDecrement()Tries to safely decrement a positive requested counter value, making sure the value does not drop below zero.voidunlock()Unlock internal counter.
-
-
-
Constructor Detail
-
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 Detail
-
increment
public void increment(long increment, Consumer<? super IllegalArgumentException> errorHandler)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.
-
-