Package dev.failsafe.internal
Class BurstyRateLimiterStats
- java.lang.Object
-
- dev.failsafe.internal.RateLimiterStats
-
- dev.failsafe.internal.BurstyRateLimiterStats
-
class BurstyRateLimiterStats extends RateLimiterStats
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
Fields Modifier and Type Field Description private long
availablePermits
private long
currentPeriod
private long
periodNanos
(package private) long
periodPermits
-
Fields inherited from class dev.failsafe.internal.RateLimiterStats
stopwatch
-
-
Constructor Summary
Constructors Constructor Description BurstyRateLimiterStats(RateLimiterConfig<?> config, RateLimiterStats.Stopwatch stopwatch)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description long
acquirePermits(long requestedPermits, java.time.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
getAvailablePermits()
(package private) long
getCurrentPeriod()
(package private) void
reset()
Resets the rate limiter's internal stats.-
Methods inherited from class dev.failsafe.internal.RateLimiterStats
exceedsMaxWaitTime, getElapsed
-
-
-
-
Constructor Detail
-
BurstyRateLimiterStats
BurstyRateLimiterStats(RateLimiterConfig<?> config, RateLimiterStats.Stopwatch stopwatch)
-
-
Method Detail
-
acquirePermits
public long acquirePermits(long requestedPermits, java.time.Duration maxWaitTime)
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
-
-