Class ThrottledInputStream
java.lang.Object
java.io.InputStream
java.io.FilterInputStream
org.apache.commons.io.input.ProxyInputStream
org.apache.commons.io.input.CountingInputStream
org.apache.commons.io.input.ThrottledInputStream
- All Implemented Interfaces:
Closeable, AutoCloseable
Provides bandwidth throttling on an InputStream as a filter input stream. The throttling examines the number of bytes read from the underlying InputStream,
and sleeps for a time interval if the byte-transfer is found to exceed the specified maximum rate. Thus, while the read-rate might exceed the maximum for a
short interval, the average tends towards the specified maximum, overall.
To build an instance, call builder().
Inspired by Apache HBase's class of the same name.
- Since:
- 2.16.0
- See Also:
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class ProxyInputStream
ProxyInputStream.AbstractBuilder<T,B> -
Field Summary
Fields inherited from class FilterInputStream
in -
Method Summary
Modifier and TypeMethodDescriptionprotected voidbeforeRead(int n) Invoked by thereadmethods before the call is proxied.static ThrottledInputStream.Builderbuilder()Constructs a newThrottledInputStream.Builder.toString()Methods inherited from class CountingInputStream
afterRead, getByteCount, getCount, resetByteCount, resetCount, skipMethods inherited from class ProxyInputStream
available, close, handleIOException, mark, markSupported, read, read, read, reset, setReference, unwrapMethods inherited from class InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
-
Method Details
-
builder
Constructs a newThrottledInputStream.Builder.- Returns:
- a new
ThrottledInputStream.Builder.
-
beforeRead
Description copied from class:ProxyInputStreamInvoked by thereadmethods before the call is proxied. The number of bytes that the caller wanted to read (1 for theProxyInputStream.read()method, buffer length forProxyInputStream.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)orProxyInputStream.reset(). You need to explicitly override those methods if you want to add pre-processing steps also to them.- Overrides:
beforeReadin classProxyInputStream- Parameters:
n- number of bytes that the caller asked to be read.- Throws:
IOException- if the pre-processing fails in a subclass.
-
toString
-