Class Input

    • Constructor Summary

      Constructors 
      Constructor Description
      Input()
      Creates an uninitialized Input, setBuffer(byte[]) must be called before the Input is used.
      Input​(byte[] buffer)
      Creates a new Input for reading from a byte[] buffer.
      Input​(byte[] buffer, int offset, int count)
      Creates a new Input for reading from a byte[] buffer.
      Input​(int bufferSize)
      Creates a new Input for reading from a byte[] buffer.
      Input​(InputStream inputStream)
      Creates a new Input for reading from an InputStream with a buffer size of 4096.
      Input​(InputStream inputStream, int bufferSize)
      Creates a new Input for reading from an InputStream with the specified buffer size.
    • Field Detail

      • buffer

        protected byte[] buffer
      • position

        protected int position
      • capacity

        protected int capacity
      • limit

        protected int limit
      • total

        protected long total
      • chars

        protected char[] chars
      • varEncoding

        protected boolean varEncoding
    • Constructor Detail

      • Input

        public Input()
        Creates an uninitialized Input, setBuffer(byte[]) must be called before the Input is used.
      • Input

        public Input​(int bufferSize)
        Creates a new Input for reading from a byte[] buffer.
        Parameters:
        bufferSize - The size of the buffer. An exception is thrown if more bytes than this are read and fill(byte[], int, int) does not supply more bytes.
      • Input

        public Input​(byte[] buffer)
        Creates a new Input for reading from a byte[] buffer.
        Parameters:
        buffer - An exception is thrown if more bytes than this are read and fill(byte[], int, int) does not supply more bytes.
      • Input

        public Input​(byte[] buffer,
                     int offset,
                     int count)
        Creates a new Input for reading from a byte[] buffer.
        Parameters:
        buffer - An exception is thrown if more bytes than this are read and fill(byte[], int, int) does not supply more bytes.
      • Input

        public Input​(InputStream inputStream)
        Creates a new Input for reading from an InputStream with a buffer size of 4096.
      • Input

        public Input​(InputStream inputStream,
                     int bufferSize)
        Creates a new Input for reading from an InputStream with the specified buffer size.
    • Method Detail

      • setBuffer

        public void setBuffer​(byte[] bytes)
        Sets a new buffer. The offset is 0 and the count is the buffer's length.
        See Also:
        setBuffer(byte[], int, int)
      • setBuffer

        public void setBuffer​(byte[] bytes,
                              int offset,
                              int count)
        Sets a new buffer to read from. The bytes are not copied, the old buffer is discarded and the new buffer used in its place. The position and total are reset. The InputStream is set to null.
      • getBuffer

        public byte[] getBuffer()
        Returns the buffer. The bytes between 0 and position() are the data that can be read.
      • setInputStream

        public void setInputStream​(InputStream inputStream)
        Sets an InputStream to read from when data in the buffer is exhausted. The position, limit, and total are reset, discarding any buffered bytes.
        Parameters:
        inputStream - May be null.
      • getVariableLengthEncoding

        public boolean getVariableLengthEncoding()
      • total

        public long total()
        Returns the total number of bytes read.
      • setTotal

        public void setTotal​(long total)
        Sets the total number of bytes read.
      • position

        public int position()
        Returns the current position in the buffer.
      • setPosition

        public void setPosition​(int position)
        Sets the current position in the buffer where the next byte will be read.
      • limit

        public int limit()
        Returns the limit for the buffer.
      • setLimit

        public void setLimit​(int limit)
        Sets the limit in the buffer which marks the end of the data that can be read.
      • fill

        protected int fill​(byte[] buffer,
                           int offset,
                           int count)
                    throws KryoException
        Fills the buffer with more bytes. The default implementation reads from the InputStream, if set. Can be overridden to fill the bytes from another source.
        Returns:
        -1 if there are no more bytes.
        Throws:
        KryoException
      • require

        protected int require​(int required)
                       throws KryoException
        Fills the buffer with at least the number of bytes specified.
        Parameters:
        required - Must be > 0.
        Returns:
        The number of bytes remaining in the buffer, which will be at least required bytes.
        Throws:
        KryoBufferUnderflowException - if fill(byte[], int, int) is unable to provide more bytes (buffer underflow).
        KryoException
      • optional

        protected int optional​(int optional)
                        throws KryoException
        Fills the buffer with at least the number of bytes specified, if possible.
        Parameters:
        optional - Must be > 0.
        Returns:
        the number of bytes remaining, but not more than optional, or -1 if fill(byte[], int, int) is unable to provide more bytes.
        Throws:
        KryoException
      • read

        public int read​(byte[] bytes)
                 throws KryoException
        Reads bytes.length bytes or less and writes them to the specified byte[], starting at 0, and returns the number of bytes read or -1 if no more bytes are available.
        Overrides:
        read in class InputStream
        Throws:
        KryoException
      • read

        public int read​(byte[] bytes,
                        int offset,
                        int count)
                 throws KryoException
        Reads count bytes or less and writes them to the specified byte[], starting at offset, and returns the number of bytes read or -1 if no more bytes are available.
        Overrides:
        read in class InputStream
        Throws:
        KryoException
      • readByteUnsigned

        public int readByteUnsigned()
                             throws KryoException
        Reads a byte as an int from 0 to 255.
        Throws:
        KryoException
      • readBytes

        public byte[] readBytes​(int length)
                         throws KryoException
        Reads the specified number of bytes into a new byte[].
        Throws:
        KryoException
      • readBytes

        public void readBytes​(byte[] bytes)
                       throws KryoException
        Reads bytes.length bytes and writes them to the specified byte[], starting at index 0.
        Throws:
        KryoException
      • readBytes

        public void readBytes​(byte[] bytes,
                              int offset,
                              int count)
                       throws KryoException
        Reads count bytes and writes them to the specified byte[], starting at offset.
        Throws:
        KryoException
      • readVarIntFlag

        public boolean readVarIntFlag()
        Reads the boolean part of a varint flag. The position is not advanced, readVarIntFlag(boolean) should be used to advance the position.
      • readVarIntFlag

        public int readVarIntFlag​(boolean optimizePositive)
        Reads the 1-5 byte int part of a varint flag. The position is advanced so if the boolean part is needed it should be read first with readVarIntFlag().
      • readVarFloat

        public float readVarFloat​(float precision,
                                  boolean optimizePositive)
                           throws KryoException
        Reads a 1-5 byte float with reduced precision.
        Throws:
        KryoException
      • readVarDouble

        public double readVarDouble​(double precision,
                                    boolean optimizePositive)
                             throws KryoException
        Reads a 1-9 byte double with reduced precision.
        Throws:
        KryoException
      • readShortUnsigned

        public int readShortUnsigned()
                              throws KryoException
        Reads a 2 byte short as an int from 0 to 65535.
        Throws:
        KryoException
      • readStringBuilder

        public StringBuilder readStringBuilder()
        Reads the length and string of UTF8 characters, or null. For non-ASCII strings, this method avoids allocating a string by reading directly to the StringBuilder. This can read strings written by Output.writeString(String) and Output.writeAscii(String).
        Returns:
        May be null.
      • readInts

        public int[] readInts​(int length)
                       throws KryoException
        Reads an int array in bulk. This may be more efficient than reading them individually.
        Throws:
        KryoException
      • readLongs

        public long[] readLongs​(int length)
                         throws KryoException
        Reads a long array in bulk. This may be more efficient than reading them individually.
        Throws:
        KryoException
      • readFloats

        public float[] readFloats​(int length)
                           throws KryoException
        Reads a float array in bulk. This may be more efficient than reading them individually.
        Throws:
        KryoException
      • readDoubles

        public double[] readDoubles​(int length)
                             throws KryoException
        Reads a double array in bulk. This may be more efficient than reading them individually.
        Throws:
        KryoException
      • readShorts

        public short[] readShorts​(int length)
                           throws KryoException
        Reads a short array in bulk. This may be more efficient than reading them individually.
        Throws:
        KryoException
      • readChars

        public char[] readChars​(int length)
                         throws KryoException
        Reads a char array in bulk. This may be more efficient than reading them individually.
        Throws:
        KryoException
      • readBooleans

        public boolean[] readBooleans​(int length)
                               throws KryoException
        Reads a boolean array in bulk. This may be more efficient than reading them individually.
        Throws:
        KryoException