Package dev.failsafe.internal
Class SmoothRateLimiterStats
java.lang.Object
dev.failsafe.internal.RateLimiterStats
dev.failsafe.internal.SmoothRateLimiterStats
A rate limiter implementation that evenly distributes permits over time, based on the max permits per period. This
implementation focuses on the interval between permits, and tracks the next interval in which a permit is free.
-
Nested Class Summary
Nested classes/interfaces inherited from class dev.failsafe.internal.RateLimiterStats
RateLimiterStats.Stopwatch
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) final long
private long
Fields inherited from class dev.failsafe.internal.RateLimiterStats
stopwatch
-
Constructor Summary
ConstructorsConstructorDescriptionSmoothRateLimiterStats
(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) void
reset()
Resets the rate limiter's internal stats.Methods inherited from class dev.failsafe.internal.RateLimiterStats
exceedsMaxWaitTime, getElapsed
-
Field Details
-
intervalNanos
final long intervalNanos -
nextFreePermitNanos
private long nextFreePermitNanos
-
-
Constructor Details
-
SmoothRateLimiterStats
SmoothRateLimiterStats(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
-
getNextFreePermitNanos
long getNextFreePermitNanos() -
reset
void reset()Description copied from class:RateLimiterStats
Resets the rate limiter's internal stats.- Specified by:
reset
in classRateLimiterStats
-