Package org.apache.cassandra.io.util
Class TeeDataInputPlus
- java.lang.Object
-
- org.apache.cassandra.io.util.TeeDataInputPlus
-
- All Implemented Interfaces:
java.io.DataInput
,DataInputPlus
public class TeeDataInputPlus extends java.lang.Object implements DataInputPlus
DataInput that also stores the raw inputs into an output buffer This is useful for storing serialized buffers as they are deserialized. Note: If a non-zero limit is included it is important to for callers to checkisLimitReached()
before using the tee buffer as it could be cropped.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.cassandra.io.util.DataInputPlus
DataInputPlus.DataInputStreamPlus
-
-
Constructor Summary
Constructors Constructor Description TeeDataInputPlus(DataInputPlus source, DataOutputPlus teeBuffer)
TeeDataInputPlus(DataInputPlus source, DataOutputPlus teeBuffer, long limit)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
isLimitReached()
Used to detect if the teeBuffer hit the supplied limit.boolean
readBoolean()
byte
readByte()
char
readChar()
double
readDouble()
float
readFloat()
void
readFully(byte[] bytes)
void
readFully(byte[] bytes, int offset, int length)
int
readInt()
java.lang.String
readLine()
long
readLong()
short
readShort()
int
readUnsignedByte()
int
readUnsignedShort()
long
readUnsignedVInt()
Think hard before opting for an unsigned encoding.java.lang.String
readUTF()
long
readVInt()
Read a 64-bit integer back.int
skipBytes(int n)
Always skips the requested number of bytes, unless EOF is reachedvoid
skipBytesFully(int n)
-
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
readUnsignedVInt32, readVInt32
-
-
-
-
Constructor Detail
-
TeeDataInputPlus
public TeeDataInputPlus(DataInputPlus source, DataOutputPlus teeBuffer)
-
TeeDataInputPlus
public TeeDataInputPlus(DataInputPlus source, DataOutputPlus teeBuffer, long limit)
-
-
Method Detail
-
readFully
public void readFully(byte[] bytes) throws java.io.IOException
- Specified by:
readFully
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readFully
public void readFully(byte[] bytes, int offset, int length) throws java.io.IOException
- Specified by:
readFully
in interfacejava.io.DataInput
- 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
-
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
-
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
-
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
-
skipBytesFully
public void skipBytesFully(int n) throws java.io.IOException
- Specified by:
skipBytesFully
in interfaceDataInputPlus
- Throws:
java.io.IOException
-
isLimitReached
public boolean isLimitReached()
Used to detect if the teeBuffer hit the supplied limit. If true this means the teeBuffer does not contain the full input.
-
-