public static class RateLimiter.SimpleRateLimiter extends RateLimiter
RateLimiter.SimpleRateLimiter
Modifier and Type | Field and Description |
---|---|
private long |
lastNS |
private double |
mbPerSec |
private static int |
MIN_PAUSE_CHECK_MSEC |
private long |
minPauseCheckBytes |
Constructor and Description |
---|
SimpleRateLimiter(double mbPerSec)
mbPerSec is the MB/sec max IO rate
|
Modifier and Type | Method and Description |
---|---|
double |
getMBPerSec()
The current mb per second rate limit.
|
long |
getMinPauseCheckBytes()
How many bytes caller should add up itself before invoking
RateLimiter.pause(long) . |
long |
pause(long bytes)
Pauses, if necessary, to keep the instantaneous IO
rate at or below the target.
|
void |
setMBPerSec(double mbPerSec)
Sets an updated mb per second rate limit.
|
private static final int MIN_PAUSE_CHECK_MSEC
private volatile double mbPerSec
private volatile long minPauseCheckBytes
private long lastNS
public SimpleRateLimiter(double mbPerSec)
public void setMBPerSec(double mbPerSec)
setMBPerSec
in class RateLimiter
public long getMinPauseCheckBytes()
RateLimiter
RateLimiter.pause(long)
.getMinPauseCheckBytes
in class RateLimiter
public double getMBPerSec()
getMBPerSec
in class RateLimiter
public long pause(long bytes)
getMinPauseCheckBytes()
,
otherwise it will pause way too long!pause
in class RateLimiter