Package org.jsoup.internal

## Class ConstrainableInputStream

- java.lang.Object
- - java.io.InputStream
  - - java.io.FilterInputStream
    - - java.io.BufferedInputStream
      - - org.jsoup.internal.ConstrainableInputStream

All Implemented Interfaces:
  `java.io.Closeable`, `java.lang.AutoCloseable`

    public final class ConstrainableInputStream
    extends java.io.BufferedInputStream

A jsoup internal class (so don't use it as there is no contract API) that enables constraints on an Input Stream, namely a maximum read size, and the ability to Thread.interrupt() the read.

### Field Summary

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

`buf, count, marklimit, markpos, pos`

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

`in`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`int` `read​(byte[] b, int off, int len)`
`java.nio.ByteBuffer` `readToByteBuffer​(int max)` Reads this inputstream to a ByteBuffer.
`void` `reset()`
`ConstrainableInputStream` `timeout​(long startTimeNanos, long timeoutMillis)`
`static ConstrainableInputStream` `wrap​(java.io.InputStream in, int bufferSize, int maxSize)` If this InputStream is not already a ConstrainableInputStream, let it be one.

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

`available, close, mark, markSupported, read, skip`

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

`read`

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

`nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo`

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

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

### Method Detail

#### wrap

    public static ConstrainableInputStream wrap​(java.io.InputStream in,
                                                int bufferSize,
                                                int maxSize)

If this InputStream is not already a ConstrainableInputStream, let it be one.

Parameters:
  `in` - the input stream to (maybe) wrap
  `bufferSize` - the buffer size to use when reading
  `maxSize` - the maximum size to allow to be read. 0 == infinite.
Returns:
  a constrainable input stream

#### read

    public int read​(byte[] b,
                    int off,
                    int len)
             throws java.io.IOException

Overrides:
  `read` in class `java.io.BufferedInputStream`
Throws:
  `java.io.IOException`

#### readToByteBuffer

    public java.nio.ByteBuffer readToByteBuffer​(int max)
                                         throws java.io.IOException

Reads this inputstream to a ByteBuffer. The supplied max may be less than the inputstream's max, to support reading just the first bytes.

Throws:
  `java.io.IOException`

#### reset

    public void reset()
               throws java.io.IOException

Overrides:
  `reset` in class `java.io.BufferedInputStream`
Throws:
  `java.io.IOException`

#### timeout

    public ConstrainableInputStream timeout​(long startTimeNanos,
                                            long timeoutMillis)