Class 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 check isLimitReached() before using the tee buffer as it could be cropped.
    • Method Detail

      • readFully

        public void readFully​(byte[] bytes)
                       throws java.io.IOException
        Specified by:
        readFully in interface java.io.DataInput
        Throws:
        java.io.IOException
      • readFully

        public void readFully​(byte[] bytes,
                              int offset,
                              int length)
                       throws java.io.IOException
        Specified by:
        readFully in interface java.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 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
      • 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
      • 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 using DataOutputPlus.writeVInt(long) or similar that zigzag encodes the vint.
        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
      • skipBytesFully

        public void skipBytesFully​(int n)
                            throws java.io.IOException
        Specified by:
        skipBytesFully in interface DataInputPlus
        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.