Package org.eclipse.jgit.util.io
Class LimitedInputStream
java.lang.Object
java.io.InputStream
java.io.FilterInputStream
org.eclipse.jgit.util.io.LimitedInputStream
- All Implemented Interfaces:
Closeable
,AutoCloseable
Wraps a
InputStream
, limiting the number of bytes which can
be read.
This class was copied and modifed from the Google Guava 16.0. Differently
from the original Guava code, when a caller tries to read from this stream
past the given limit and the wrapped stream hasn't yet reached its EOF this
class will call the limitExceeded method instead of returning EOF.- Since:
- 3.3
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate long
protected final long
Max number of bytes to be read from the wrapped streamprivate long
Fields inherited from class java.io.FilterInputStream
in
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
LimitedInputStream
(InputStream in, long limit) Create a new LimitedInputStream -
Method Summary
Methods inherited from class java.io.FilterInputStream
close, markSupported, read
Methods inherited from class java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
-
Field Details
-
left
private long left -
limit
protected final long limitMax number of bytes to be read from the wrapped stream -
mark
private long mark
-
-
Constructor Details
-
LimitedInputStream
Create a new LimitedInputStream- Parameters:
in
- an InputStreamlimit
- max number of bytes to read from the InputStream
-
-
Method Details
-
available
- Overrides:
available
in classFilterInputStream
- Throws:
IOException
-
mark
public void mark(int readLimit) - Overrides:
mark
in classFilterInputStream
-
read
- Overrides:
read
in classFilterInputStream
- Throws:
IOException
-
read
- Overrides:
read
in classFilterInputStream
- Throws:
IOException
-
reset
- Overrides:
reset
in classFilterInputStream
- Throws:
IOException
-
skip
- Overrides:
skip
in classFilterInputStream
- Throws:
IOException
-
limitExceeded
Called when trying to read past the givenlimit
and the wrapped InputStreamFilterInputStream.in
hasn't yet reached its EOF- Throws:
IOException
- subclasses can throw anIOException
when the limit is exceeded. The throws java.io.IOException will be forwarded back to the caller of the read method which read the stream past the limit.
-