public final class ThrottledInputStream
extends org.apache.commons.io.input.CountingInputStream
To build an instance, call builder().
Inspired by Apache HBase's class of the same name.
ThrottledInputStream.Builder| Modifier and Type | Class and Description |
|---|---|
static class |
ThrottledInputStream.Builder
Builds a new
ThrottledInputStream. |
ProxyInputStream.AbstractBuilder<T,B extends AbstractStreamBuilder<T,B>>in| Modifier and Type | Method and Description |
|---|---|
protected void |
beforeRead(int n)
Invoked by the
read methods before the call is proxied. |
static ThrottledInputStream.Builder |
builder()
Constructs a new
ThrottledInputStream.Builder. |
(package private) double |
getMaxBytesPerSecond() |
(package private) java.time.Duration |
getTotalSleepDuration()
Gets the total duration spent in sleep.
|
(package private) static long |
toSleepMillis(long bytesRead,
long elapsedMillis,
double maxBytesPerSec) |
String |
toString() |
afterRead, getByteCount, resetByteCount, skipavailable, checkOpen, close, handleIOException, isClosed, mark, markSupported, read, read, read, reset, setReference, unwrapprotected void beforeRead(int n)
throws IOException
ProxyInputStreamread methods before the call is proxied. The number
of bytes that the caller wanted to read (1 for the ProxyInputStream.read()
method, buffer length for ProxyInputStream.read(byte[]), etc.) is given as
an argument.
Subclasses can override this method to add common pre-processing functionality without having to override all the read methods. The default implementation does nothing.
Note this method is not called from ProxyInputStream.skip(long) or
ProxyInputStream.reset(). You need to explicitly override those methods if
you want to add pre-processing steps also to them.
beforeRead in class ProxyInputStreamn - number of bytes that the caller asked to be read.IOException - if the pre-processing fails in a subclass.public static ThrottledInputStream.Builder builder()
ThrottledInputStream.Builder.ThrottledInputStream.Builder.double getMaxBytesPerSecond()
java.time.Duration getTotalSleepDuration()
static long toSleepMillis(long bytesRead,
long elapsedMillis,
double maxBytesPerSec)