Class RateLimiter.SimpleRateLimiter

  • Enclosing class:
    RateLimiter

    public static class RateLimiter.SimpleRateLimiter
    extends RateLimiter
    Simple class to rate limit IO.
    • Constructor Detail

      • SimpleRateLimiter

        public 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
      • getMinPauseCheckBytes

        public long getMinPauseCheckBytes()
        Description copied from class: RateLimiter
        How many bytes caller should add up itself before invoking RateLimiter.pause(long). NOTE: The value returned by this method may change over time and is not guaranteed to be constant throughout the lifetime of the RateLimiter. Users are advised to refresh their local values with calls to this method to ensure consistency.
        Specified by:
        getMinPauseCheckBytes 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. Be sure to only call this method when bytes > getMinPauseCheckBytes(), otherwise it will pause way too long!
        Specified by:
        pause in class RateLimiter
        Returns:
        the pause time in nano seconds