Package org.apache.cassandra.io.util
Class RebufferingInputStream
- java.lang.Object
-
- java.io.InputStream
-
- org.apache.cassandra.io.util.DataInputPlus.DataInputStreamPlus
-
- org.apache.cassandra.io.util.RebufferingInputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.io.DataInput
,java.lang.AutoCloseable
,DataInputPlus
- Direct Known Subclasses:
AsyncStreamingInputPlus
,ChecksummedDataInput
,CompressedInputStream
,DataInputBuffer
,FileInputStreamPlus
,MemoryInputStream
,NIODataInputStream
,RandomAccessReader
,StreamCompressionInputStream
public abstract class RebufferingInputStream extends DataInputPlus.DataInputStreamPlus 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 Description protected java.nio.ByteBuffer
buffer
-
Constructor Summary
Constructors Modifier Constructor Description protected
RebufferingInputStream(java.nio.ByteBuffer buffer)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method 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)
void
readFully(java.nio.ByteBuffer dst)
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.int
readUnsignedVInt32()
Read up to a 32-bit integer back.java.lang.String
readUTF()
long
readVInt()
Read a 64-bit integer back.int
readVInt32()
Read up to a 32-bit integer back.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, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, transferTo
-
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
-
-
-
-
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 interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readFully
public void readFully(byte[] b, int off, int len) throws java.io.IOException
- Specified by:
readFully
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException
- Overrides:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
readFully
public void readFully(java.nio.ByteBuffer dst) throws java.io.IOException
- 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 interfacejava.io.DataInput
- Specified by:
skipBytes
in interfaceDataInputPlus
- 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 interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readByte
public byte readByte() throws java.io.IOException
- Specified by:
readByte
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readUnsignedByte
public int readUnsignedByte() throws java.io.IOException
- Specified by:
readUnsignedByte
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readShort
public short readShort() throws java.io.IOException
- Specified by:
readShort
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readUnsignedShort
public int readUnsignedShort() throws java.io.IOException
- Specified by:
readUnsignedShort
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readChar
public char readChar() throws java.io.IOException
- Specified by:
readChar
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readInt
public int readInt() throws java.io.IOException
- Specified by:
readInt
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readLong
public long readLong() throws java.io.IOException
- Specified by:
readLong
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readVInt
public long readVInt() throws java.io.IOException
Description copied from interface:DataInputPlus
Read a 64-bit integer back. This method assumes it was originally written usingDataOutputPlus.writeVInt(long)
or similar that zigzag encodes the vint.- Specified by:
readVInt
in interfaceDataInputPlus
- Throws:
java.io.IOException
-
readVInt32
public int readVInt32() throws java.io.IOException
Description copied from interface:DataInputPlus
Read up to a 32-bit integer back. This method assumes the integer was originally written usingDataOutputPlus.writeVInt32(int)
or similar that zigzag encodes the vint.- Specified by:
readVInt32
in interfaceDataInputPlus
- 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 interfaceDataInputPlus
- Throws:
java.io.IOException
-
readUnsignedVInt32
public int readUnsignedVInt32() throws java.io.IOException
Description copied from interface:DataInputPlus
Read up to a 32-bit integer back. This method assumes the original integer was written usingDataOutputPlus.writeUnsignedVInt32(int)
or similar that doesn't zigzag encodes the vint.- Specified by:
readUnsignedVInt32
in interfaceDataInputPlus
- Throws:
java.io.IOException
-
readFloat
public float readFloat() throws java.io.IOException
- Specified by:
readFloat
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readDouble
public double readDouble() throws java.io.IOException
- Specified by:
readDouble
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readLine
public java.lang.String readLine() throws java.io.IOException
- Specified by:
readLine
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readUTF
public java.lang.String readUTF() throws java.io.IOException
- Specified by:
readUTF
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
read
public int read() throws java.io.IOException
- Specified by:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
-