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.Subscriber
s.-
Constructor Summary
ConstructorDescriptionCreate 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 TypeMethodDescriptionlong
get()
Gets the current requested event counter value.void
increment
(long increment, Consumer<? super IllegalArgumentException> errorHandler) Increments safely a requested event counter to preventLong.MAX_VALUE
overflow.void
lock()
Lock internal counter if strict mode is on.boolean
Tries to safely decrement a positive requested counter value, making sure the value does not drop below zero.void
unlock()
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_VALUE
overflow.- Parameters:
increment
- amount of additional events to request.errorHandler
- a consumer ofIllegalArgumentException
to 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:
true
if the initial positive value has been decremented successfully,false
in 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.
-