Package org.apache.commons.io.input
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:
java.io.Closeable,java.lang.AutoCloseable
public final class ThrottledInputStream extends CountingInputStream
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:
ThrottledInputStream.Builder
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classThrottledInputStream.BuilderBuilds a newThrottledInputStream.-
Nested classes/interfaces inherited from class org.apache.commons.io.input.ProxyInputStream
ProxyInputStream.AbstractBuilder<T,B extends AbstractStreamBuilder<T,B>>
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidbeforeRead(int n)Invoked by thereadmethods before the call is proxied.static ThrottledInputStream.Builderbuilder()Constructs a newThrottledInputStream.Builder.java.lang.StringtoString()-
Methods inherited from class org.apache.commons.io.input.CountingInputStream
afterRead, getByteCount, getCount, resetByteCount, resetCount, skip
-
Methods inherited from class org.apache.commons.io.input.ProxyInputStream
available, close, handleIOException, mark, markSupported, read, read, read, reset, setReference, unwrap
-
-
-
-
Method Detail
-
builder
public static ThrottledInputStream.Builder builder()
Constructs a newThrottledInputStream.Builder.- Returns:
- a new
ThrottledInputStream.Builder.
-
beforeRead
protected void beforeRead(int n) throws java.io.IOException
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:
java.io.IOException- if the pre-processing fails in a subclass.
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-