blob: 4a1bd79cd7b7d8670593c51a981ab019e3b26c30 [file] [log] [blame]
package com.google.common.util.concurrent;
/**
* Wrapper class over guava Rate Limiter, uses SmoothBursty Ratelimiter. This class mainly exists to expose
* package protected method queryEarliestAvailable of guava RateLimiter
*/
public class SidecarRateLimiter
{
private final RateLimiter rateLimiter;
private SidecarRateLimiter(final double permitsPerSecond)
{
this.rateLimiter = RateLimiter.create(permitsPerSecond);
}
public static SidecarRateLimiter create(final double permitsPerSecond)
{
return new SidecarRateLimiter(permitsPerSecond);
}
/**
* Returns earliest time permits will become available
*/
public long queryEarliestAvailable(final long nowMicros)
{
return this.rateLimiter.queryEarliestAvailable(nowMicros);
}
/**
* Tries to reserve 1 permit, if not available immediately returns false
*/
public boolean tryAcquire()
{
return this.rateLimiter.tryAcquire();
}
}