org.apache.lucene.store

## Class RateLimiter.SimpleRateLimiter

- java.lang.Object
- - org.apache.lucene.store.RateLimiter
  - - 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

    Constructors
    Constructor and Description
    `RateLimiter.SimpleRateLimiter(double mbPerSec)` mbPerSec is the MB/sec max IO rate

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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.