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

    public abstract class LimitedInputStream
    extends FilterInputStream

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

Fields
`protected long` `limit` Max number of bytes to be read from the wrapped stream

### Fields inherited from class java.io.FilterInputStream

`in`

### Constructor Summary

Constructors
`protected` `LimitedInputStream(InputStream in, long limit)` Create a new LimitedInputStream

### Method Summary

Methods
`int` `available()`
`protected abstract void` `limitExceeded()` Called when trying to read past the given `limit` and the wrapped InputStream `FilterInputStream.in` hasn't yet reached its EOF
`void` `mark(int readLimit)`
`int` `read()`
`int` `read(byte[] b, int off, int len)`
`void` `reset()`
`long` `skip(long n)`

### Methods inherited from class java.io.FilterInputStream

`close, markSupported, read`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### limit

    protected final long limit

Max number of bytes to be read from the wrapped stream

### Constructor Detail

#### LimitedInputStream

    protected LimitedInputStream(InputStream in,
                      long limit)

Create a new LimitedInputStream

Parameters:
  `in` - an InputStream
  `limit` - max number of bytes to read from the InputStream

### Method Detail

#### available

    public int available()
                  throws IOException

Overrides:
  `available` in class `FilterInputStream`
Throws:
  `IOException`

#### mark

    public void mark(int readLimit)

Overrides:
  `mark` in class `FilterInputStream`

#### read

    public int read()
             throws IOException

Overrides:
  `read` in class `FilterInputStream`
Throws:
  `IOException`

#### read

    public int read(byte[] b,
           int off,
           int len)
             throws IOException

Overrides:
  `read` in class `FilterInputStream`
Throws:
  `IOException`

#### reset

    public void reset()
               throws IOException

Overrides:
  `reset` in class `FilterInputStream`
Throws:
  `IOException`

#### skip

    public long skip(long n)
              throws IOException

Overrides:
  `skip` in class `FilterInputStream`
Throws:
  `IOException`

#### limitExceeded

    protected abstract void limitExceeded()
                                   throws IOException

Called when trying to read past the given `limit` and the wrapped InputStream `FilterInputStream.in` hasn't yet reached its EOF

Throws:
  `IOException` - subclasses can throw an IOException when the limit is exceeded. The throws IOException will be forwarded back to the caller of the read method which read the stream past the limit.