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 a specified InputStream. It is implemented as a wrapper on top of another InputStream instance. The throttling works by examining the number of bytes read from the underlying InputStream from the beginning, and sleep()ing for a time interval if the byte-transfer is found exceed the specified tolerable maximum. (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, see
ThrottledInputStream.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 class
ThrottledInputStream.Builder
Builds 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 void
beforeRead(int n)
Invoked by theread
methods before the call is proxied.static ThrottledInputStream.Builder
builder()
Constructs a newThrottledInputStream.Builder
.java.lang.String
toString()
-
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, 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:ProxyInputStream
Invoked by theread
methods 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:
beforeRead
in 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:
toString
in classjava.lang.Object
-
-