Package dev.failsafe.internal
Class BurstyRateLimiterStats
java.lang.Object
dev.failsafe.internal.RateLimiterStats
dev.failsafe.internal.BurstyRateLimiterStats
A rate limiter implementation that allows bursts of executions, up to the max permits per period. This implementation
tracks the current period and available permits, which can go into a deficit. A deficit of available permits will
cause wait times for callers that can be several periods long, depending on the size of the deficit and the number of
requested permits.
-
Nested Class Summary
Nested classes/interfaces inherited from class dev.failsafe.internal.RateLimiterStats
RateLimiterStats.Stopwatch
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate long
private long
private final long
(package private) final long
Fields inherited from class dev.failsafe.internal.RateLimiterStats
stopwatch
-
Constructor Summary
ConstructorsConstructorDescriptionBurstyRateLimiterStats
(RateLimiterConfig<?> config, RateLimiterStats.Stopwatch stopwatch) -
Method Summary
Modifier and TypeMethodDescriptionlong
acquirePermits
(long requestedPermits, Duration maxWaitTime) Eagerly acquires permits and returns the time in nanos that must be waited in order to use the permits, else returns-1
if the wait time would exceed themaxWaitTime
.(package private) long
(package private) long
(package private) void
reset()
Resets the rate limiter's internal stats.Methods inherited from class dev.failsafe.internal.RateLimiterStats
exceedsMaxWaitTime, getElapsed
-
Field Details
-
periodPermits
final long periodPermits -
periodNanos
private final long periodNanos -
availablePermits
private long availablePermits -
currentPeriod
private long currentPeriod
-
-
Constructor Details
-
BurstyRateLimiterStats
BurstyRateLimiterStats(RateLimiterConfig<?> config, RateLimiterStats.Stopwatch stopwatch)
-
-
Method Details
-
acquirePermits
Description copied from class:RateLimiterStats
Eagerly acquires permits and returns the time in nanos that must be waited in order to use the permits, else returns-1
if the wait time would exceed themaxWaitTime
.- Specified by:
acquirePermits
in classRateLimiterStats
- Parameters:
requestedPermits
- the number of requested permitsmaxWaitTime
- the max time to wait for the requested permits, elsenull
to wait indefinitely
-
getAvailablePermits
long getAvailablePermits() -
getCurrentPeriod
long getCurrentPeriod() -
reset
void reset()Description copied from class:RateLimiterStats
Resets the rate limiter's internal stats.- Specified by:
reset
in classRateLimiterStats
-