org.apache.lucene.store
Class RateLimiter.SimpleRateLimiter

java.lang.Object
  extended by org.apache.lucene.store.RateLimiter
      extended by org.apache.lucene.store.RateLimiter.SimpleRateLimiter
Enclosing class:
RateLimiter

public static class RateLimiter.SimpleRateLimiter
extends RateLimiter

Simple class to rate limit IO.


Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.lucene.store.RateLimiter
RateLimiter.SimpleRateLimiter
 
Constructor Summary
RateLimiter.SimpleRateLimiter(double mbPerSec)
          mbPerSec is the MB/sec max IO rate
 
Method Summary
 double getMbPerSec()
          The current mb per second rate limit.
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RateLimiter.SimpleRateLimiter

public RateLimiter.SimpleRateLimiter(double mbPerSec)
mbPerSec is the MB/sec max IO rate

Method Detail

setMbPerSec

public void setMbPerSec(double mbPerSec)
Sets an updated mb per second rate limit.

Specified by:
setMbPerSec in class RateLimiter

getMbPerSec

public double getMbPerSec()
The current mb per second rate limit.

Specified by:
getMbPerSec in class RateLimiter

pause

public long pause(long bytes)
Pauses, if necessary, to keep the instantaneous IO rate at or below the target. NOTE: multiple threads may safely use this, however the implementation is not perfectly thread safe but likely in practice this is harmless (just means in some rare cases the rate might exceed the target). It's best to call this with a biggish count, not one byte at a time.

Specified by:
pause in class RateLimiter
Returns:
the pause time in nano seconds


Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.