org.apache.lucene.store
Class RateLimiter

java.lang.Object
  extended by org.apache.lucene.store.RateLimiter
Direct Known Subclasses:
RateLimiter.SimpleRateLimiter

public abstract class RateLimiter
extends Object

Abstract base class to rate limit IO. Typically implementations are shared across multiple IndexInputs or IndexOutputs (for example those involved all merging). Those IndexInputs and IndexOutputs would call pause(long) whenever they want to read bytes or write bytes.


Nested Class Summary
static class RateLimiter.SimpleRateLimiter
          Simple class to rate limit IO.
 
Constructor Summary
RateLimiter()
           
 
Method Summary
abstract  double getMbPerSec()
          The current mb per second rate limit.
abstract  long pause(long bytes)
          Pauses, if necessary, to keep the instantaneous IO rate at or below the target.
abstract  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

public RateLimiter()
Method Detail

setMbPerSec

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


getMbPerSec

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


pause

public abstract long pause(long bytes)
Pauses, if necessary, to keep the instantaneous IO rate at or below the target.

Note: the implementation is thread-safe

Returns:
the pause time in nano seconds


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