com.esotericsoftware.kryo.io
Class Input

java.lang.Object
  extended by java.io.InputStream
      extended by com.esotericsoftware.kryo.io.Input
All Implemented Interfaces:
java.io.Closeable
Direct Known Subclasses:
InputChunked

public class Input
extends java.io.InputStream

An InputStream that reads data from a byte array and optionally fills the byte array from another OutputStream as needed. Utility methods are provided for efficiently reading primitive types and strings.


Constructor Summary
Input()
          Creates an uninitialized Input.
Input(byte[] buffer)
          Creates a new Input for reading from a byte array.
Input(byte[] buffer, int offset, int count)
          Creates a new Input for reading from a byte array.
Input(java.io.InputStream inputStream)
          Creates a new Input for reading from an InputStream with a buffer size of 4096.
Input(java.io.InputStream inputStream, int bufferSize)
          Creates a new Input for reading from an InputStream.
Input(int bufferSize)
          Creates a new Input for reading from a byte array.
 
Method Summary
 boolean canReadInt()
          Returns true if enough bytes are available to read an int with readInt(boolean).
 boolean canReadLong()
          Returns true if enough bytes are available to read a long with readLong(boolean).
 void close()
          Closes the underlying InputStream, if any.
protected  int fill(byte[] buffer, int offset, int count)
          Fills the buffer with more bytes.
 byte[] getBuffer()
           
 java.io.InputStream getInputStream()
           
 int limit()
          Returns the limit for the buffer.
 int position()
          Returns the current position in the buffer.
 int read()
          Reads a single byte as an int from 0 to 255, or -1 if there are no more bytes are available.
 int read(byte[] bytes)
          Reads bytes.length bytes or less and writes them to the specified byte[], starting at 0, and returns the number of bytes read.
 int read(byte[] bytes, int offset, int count)
          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.
 boolean readBoolean()
          Reads a 1 byte boolean.
 byte readByte()
          Reads a single byte.
 void readBytes(byte[] bytes)
          Reads bytes.length bytes and writes them to the specified byte[], starting at index 0.
 void readBytes(byte[] bytes, int offset, int count)
          Reads count bytes and writes them to the specified byte[], starting at offset.
 byte[] readBytes(int length)
          Reads the specified number of bytes into a new byte[].
 int readByteUnsigned()
          Reads a byte as an int from 0 to 255.
 char readChar()
          Reads a 2 byte char.
 double readDouble()
          Reads an 8 bytes double.
 double readDouble(double precision, boolean optimizePositive)
          Reads a 1-9 byte double with reduced precision.
 float readFloat()
          Reads a 4 byte float.
 float readFloat(float precision, boolean optimizePositive)
          Reads a 1-5 byte float with reduced precision.
 int readInt()
          Reads a 4 byte int.
 int readInt(boolean optimizePositive)
          Reads a 1-5 byte int.
 long readLong()
          Reads an 8 byte long.
 long readLong(boolean optimizePositive)
          Reads a 1-9 byte long.
 short readShort()
          Reads a 2 byte short.
 int readShortUnsigned()
          Reads a 2 byte short as an int from 0 to 65535.
 java.lang.String readString()
          Reads the length and string of UTF8 characters, or null.
 java.lang.StringBuilder readStringBuilder()
          Reads the length and string of UTF8 characters, or null.
 void rewind()
          Sets the position and total to zero.
 void setBuffer(byte[] bytes)
          Sets a new buffer.
 void setBuffer(byte[] bytes, int offset, int count)
          Sets a new buffer.
 void setInputStream(java.io.InputStream inputStream)
          Sets a new InputStream.
 void setLimit(int limit)
          Sets the limit in the buffer.
 void setPosition(int position)
          Sets the current position in the buffer.
 void setTotal(int total)
          Sets the number of bytes read.
 void skip(int count)
          Discards the specified number of bytes.
 long skip(long count)
          Discards the specified number of bytes.
 int total()
          Returns the number of bytes read.
 
Methods inherited from class java.io.InputStream
available, mark, markSupported, reset
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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 array.

Parameters:
bufferSize - The size of the buffer. An exception is thrown if more bytes than this are read.

Input

public Input(byte[] buffer)
Creates a new Input for reading from a byte array.

Parameters:
buffer - An exception is thrown if more bytes than this are read.

Input

public Input(byte[] buffer,
             int offset,
             int count)
Creates a new Input for reading from a byte array.

Parameters:
buffer - An exception is thrown if more bytes than this are read.

Input

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


Input

public Input(java.io.InputStream inputStream,
             int bufferSize)
Creates a new Input for reading from an InputStream.

Method Detail

setBuffer

public void setBuffer(byte[] bytes)
Sets a new buffer. The position and total are reset, discarding any buffered bytes.


setBuffer

public void setBuffer(byte[] bytes,
                      int offset,
                      int count)
Sets a new buffer. The position and total are reset, discarding any buffered bytes.


getBuffer

public byte[] getBuffer()

getInputStream

public java.io.InputStream getInputStream()

setInputStream

public void setInputStream(java.io.InputStream inputStream)
Sets a new InputStream. The position and total are reset, discarding any buffered bytes.

Parameters:
inputStream - May be null.

total

public int total()
Returns the number of bytes read.


setTotal

public void setTotal(int total)
Sets the 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.


limit

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


setLimit

public void setLimit(int limit)
Sets the limit in the buffer.


rewind

public void rewind()
Sets the position and total to zero.


skip

public void skip(int count)
          throws KryoException
Discards the specified number of bytes.

Throws:
KryoException

fill

protected int fill(byte[] buffer,
                   int offset,
                   int count)
            throws KryoException
Fills the buffer with more bytes. Can be overridden to fill the bytes from a source other than the InputStream.

Throws:
KryoException

read

public int read()
         throws KryoException
Reads a single byte as an int from 0 to 255, or -1 if there are no more bytes are available.

Specified by:
read in class java.io.InputStream
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.

Overrides:
read in class java.io.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 java.io.InputStream
Throws:
KryoException

skip

public long skip(long count)
          throws KryoException
Discards the specified number of bytes.

Overrides:
skip in class java.io.InputStream
Throws:
KryoException

close

public void close()
           throws KryoException
Closes the underlying InputStream, if any.

Specified by:
close in interface java.io.Closeable
Overrides:
close in class java.io.InputStream
Throws:
KryoException

readByte

public byte readByte()
              throws KryoException
Reads a single byte.

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

readInt

public int readInt()
            throws KryoException
Reads a 4 byte int.

Throws:
KryoException

readInt

public int readInt(boolean optimizePositive)
            throws KryoException
Reads a 1-5 byte int.

Throws:
KryoException

canReadInt

public boolean canReadInt()
                   throws KryoException
Returns true if enough bytes are available to read an int with readInt(boolean).

Throws:
KryoException

canReadLong

public boolean canReadLong()
                    throws KryoException
Returns true if enough bytes are available to read a long with readLong(boolean).

Throws:
KryoException

readString

public java.lang.String readString()
Reads the length and string of UTF8 characters, or null. This can read strings written by Output.writeString(String) , Output.writeString(CharSequence), and Output.writeAscii(String).

Returns:
May be null.

readStringBuilder

public java.lang.StringBuilder readStringBuilder()
Reads the length and string of UTF8 characters, or null. This can read strings written by Output.writeString(String) , Output.writeString(CharSequence), and Output.writeAscii(String).

Returns:
May be null.

readFloat

public float readFloat()
                throws KryoException
Reads a 4 byte float.

Throws:
KryoException

readFloat

public float readFloat(float precision,
                       boolean optimizePositive)
                throws KryoException
Reads a 1-5 byte float with reduced precision.

Throws:
KryoException

readShort

public short readShort()
                throws KryoException
Reads a 2 byte short.

Throws:
KryoException

readShortUnsigned

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

Throws:
KryoException

readLong

public long readLong()
              throws KryoException
Reads an 8 byte long.

Throws:
KryoException

readLong

public long readLong(boolean optimizePositive)
              throws KryoException
Reads a 1-9 byte long.

Throws:
KryoException

readBoolean

public boolean readBoolean()
                    throws KryoException
Reads a 1 byte boolean.

Throws:
KryoException

readChar

public char readChar()
              throws KryoException
Reads a 2 byte char.

Throws:
KryoException

readDouble

public double readDouble()
                  throws KryoException
Reads an 8 bytes double.

Throws:
KryoException

readDouble

public double readDouble(double precision,
                         boolean optimizePositive)
                  throws KryoException
Reads a 1-9 byte double with reduced precision.

Throws:
KryoException