RebufferingInputStream (apache-cassandra API)
Date: 2018-02-14

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
    Modifier and Type | Field and Description
    --- | ---
    `protected java.nio.ByteBuffer` | `buffer`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `RebufferingInputStream(java.nio.ByteBuffer buffer)`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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`

Copyright © 2018 The Apache Software Foundation