org.apache.cassandra.io.util

## Class RebufferingInputStream

- java.lang.Object
- - java.io.InputStream
  - - org.apache.cassandra.io.util.RebufferingInputStream

All Implemented Interfaces:
  java.io.Closeable, java.io.DataInput, java.lang.AutoCloseable, DataInputPlus

Direct Known Subclasses:
  ChecksummedDataInput, DataInputBuffer, MemoryInputStream, NIODataInputStream, RandomAccessReader

    public abstract class RebufferingInputStream
    extends java.io.InputStream
    implements DataInputPlus, java.io.Closeable

Rough equivalent of BufferedInputStream and DataInputStream wrapping a ByteBuffer that can be refilled via rebuffer. Implementations provide this buffer from various channels (socket, file, memory, etc). RebufferingInputStream is not thread safe.

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.apache.cassandra.io.util.DataInputPlus

`DataInputPlus.DataInputStreamPlus`

### Field Summary

Fields
`protected java.nio.ByteBuffer` `buffer`

### Constructor Summary

Constructors
`protected` `RebufferingInputStream(java.nio.ByteBuffer buffer)`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`int` `read()`
`int` `read(byte[] b, int off, int len)`
`boolean` `readBoolean()`
`byte` `readByte()`
`char` `readChar()`
`double` `readDouble()`
`float` `readFloat()`
`void` `readFully(byte[] b)`
`void` `readFully(byte[] b, int off, int len)`
`int` `readInt()`
`java.lang.String` `readLine()`
`long` `readLong()`
`protected long` `readPrimitiveSlowly(int bytes)`
`short` `readShort()`
`int` `readUnsignedByte()`
`int` `readUnsignedShort()`
`long` `readUnsignedVInt()` Think hard before opting for an unsigned encoding.
`java.lang.String` `readUTF()`
`long` `readVInt()`
`protected abstract void` `reBuffer()` Implementations must implement this method to refill the buffer.
`int` `skipBytes(int n)` Always skips the requested number of bytes, unless EOF is reached

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

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

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

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

### Methods inherited from interface org.apache.cassandra.io.util.DataInputPlus

`skipBytesFully`

### Methods inherited from interface java.io.Closeable

`close`

### Field Detail

#### buffer

    protected java.nio.ByteBuffer buffer

### Constructor Detail

#### RebufferingInputStream

    protected RebufferingInputStream(java.nio.ByteBuffer buffer)

### Method Detail

#### reBuffer

    protected abstract void reBuffer()
                              throws java.io.IOException

Implementations must implement this method to refill the buffer. They can expect the buffer to be empty when this method is invoked.

Throws:
  `java.io.IOException`

#### readFully

    public void readFully(byte[] b)
                   throws java.io.IOException

Specified by:
  `readFully` in interface `java.io.DataInput`
Throws:
  `java.io.IOException`

#### readFully

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

Specified by:
  `readFully` in interface `java.io.DataInput`
Throws:
  `java.io.IOException`

#### read

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

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

#### readPrimitiveSlowly

    @DontInline
    protected long readPrimitiveSlowly(int bytes)
                                            throws java.io.IOException

Throws:
  `java.io.IOException`

#### skipBytes

    public int skipBytes(int n)
                  throws java.io.IOException

Description copied from interface: `DataInputPlus`
Always skips the requested number of bytes, unless EOF is reached

Specified by:
  `skipBytes` in interface `java.io.DataInput`
Specified by:
  `skipBytes` in interface `DataInputPlus`
Parameters:
  `n` - number of bytes to skip
Returns:
  number of bytes skipped
Throws:
  `java.io.IOException`

#### readBoolean

    public boolean readBoolean()
                        throws java.io.IOException

Specified by:
  `readBoolean` in interface `java.io.DataInput`
Throws:
  `java.io.IOException`

#### readByte

    public byte readByte()
                  throws java.io.IOException

Specified by:
  `readByte` in interface `java.io.DataInput`
Throws:
  `java.io.IOException`

#### readUnsignedByte

    public int readUnsignedByte()
                         throws java.io.IOException

Specified by:
  `readUnsignedByte` in interface `java.io.DataInput`
Throws:
  `java.io.IOException`

#### readShort

    public short readShort()
                    throws java.io.IOException

Specified by:
  `readShort` in interface `java.io.DataInput`
Throws:
  `java.io.IOException`

#### readUnsignedShort

    public int readUnsignedShort()
                          throws java.io.IOException

Specified by:
  `readUnsignedShort` in interface `java.io.DataInput`
Throws:
  `java.io.IOException`

#### readChar

    public char readChar()
                  throws java.io.IOException

Specified by:
  `readChar` in interface `java.io.DataInput`
Throws:
  `java.io.IOException`

#### readInt

    public int readInt()
                throws java.io.IOException

Specified by:
  `readInt` in interface `java.io.DataInput`
Throws:
  `java.io.IOException`

#### readLong

    public long readLong()
                  throws java.io.IOException

Specified by:
  `readLong` in interface `java.io.DataInput`
Throws:
  `java.io.IOException`

#### readVInt

    public long readVInt()
                  throws java.io.IOException

Specified by:
  `readVInt` in interface `DataInputPlus`
Throws:
  `java.io.IOException`

#### readUnsignedVInt

    public long readUnsignedVInt()
                          throws java.io.IOException

Description copied from interface: `DataInputPlus`
Think hard before opting for an unsigned encoding. Is this going to bite someone because some day they might need to pass in a sentinel value using negative numbers? Is the risk worth it to save a few bytes? Signed, not a fan of unsigned values in protocols and formats

Specified by:
  `readUnsignedVInt` in interface `DataInputPlus`
Throws:
  `java.io.IOException`

#### readFloat

    public float readFloat()
                    throws java.io.IOException

Specified by:
  `readFloat` in interface `java.io.DataInput`
Throws:
  `java.io.IOException`

#### readDouble

    public double readDouble()
                      throws java.io.IOException

Specified by:
  `readDouble` in interface `java.io.DataInput`
Throws:
  `java.io.IOException`

#### readLine

    public java.lang.String readLine()
                              throws java.io.IOException

Specified by:
  `readLine` in interface `java.io.DataInput`
Throws:
  `java.io.IOException`

#### readUTF

    public java.lang.String readUTF()
                             throws java.io.IOException

Specified by:
  `readUTF` in interface `java.io.DataInput`
Throws:
  `java.io.IOException`

#### read

    public int read()
             throws java.io.IOException

Specified by:
  `read` in class `java.io.InputStream`
Throws:
  `java.io.IOException`