Package com.esotericsoftware.kryo.unsafe
Class UnsafeByteBufferInput
- java.lang.Object
-
- java.io.InputStream
-
- com.esotericsoftware.kryo.io.Input
-
- com.esotericsoftware.kryo.io.ByteBufferInput
-
- com.esotericsoftware.kryo.unsafe.UnsafeByteBufferInput
-
- All Implemented Interfaces:
Pool.Poolable,java.io.Closeable,java.lang.AutoCloseable
public class UnsafeByteBufferInput extends ByteBufferInput
AByteBufferInputthat reads data from direct ByteBuffer (off-heap memory) using sun.misc.Unsafe. Multi-byte primitive types use native byte order, so the native byte order on different computers which read and write the data must be the same.Not available on all JVMs.
Util.unsafecan be checked before using this class.This class may be much faster when
Input.setVariableLengthEncoding(boolean)is false.- Author:
- Roman Levenstein
, Nathan Sweet
-
-
Field Summary
-
Fields inherited from class com.esotericsoftware.kryo.io.ByteBufferInput
byteBuffer
-
Fields inherited from class com.esotericsoftware.kryo.io.Input
buffer, capacity, chars, inputStream, limit, position, total, varEncoding
-
-
Constructor Summary
Constructors Constructor Description UnsafeByteBufferInput()Creates an uninitialized Input,setBuffer(ByteBuffer)must be called before the Input is used.UnsafeByteBufferInput(byte[] bytes)Creates a new Input for reading from aByteBufferwhich is filled with the specified bytes.UnsafeByteBufferInput(byte[] bytes, int offset, int count)Creates a new Input for reading from aByteBufferwhich is filled with the specified bytes.UnsafeByteBufferInput(int bufferSize)Creates a new Input for reading from a directByteBuffer.UnsafeByteBufferInput(long address, int size)Creates a new Input for reading from a ByteBuffer representing the memory region at the specified address and size.UnsafeByteBufferInput(java.io.InputStream inputStream)Creates a new Input for reading from an InputStream with a buffer size of 4096.UnsafeByteBufferInput(java.io.InputStream inputStream, int bufferSize)Creates a new Input for reading from an InputStream with the specified buffer size.UnsafeByteBufferInput(java.nio.ByteBuffer buffer)Creates a new Input for reading from a ByteBuffer.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intread()Reads a single byte as an int from 0 to 255, or -1 if there are no more bytes are available.booleanreadBoolean()Reads a 1 byte boolean.boolean[]readBooleans(int length)Reads a boolean array in bulk.bytereadByte()Reads a single byte.voidreadBytes(byte[] bytes, int offset, int count)Reads count bytes and writes them to the specified byte[], starting at offset.voidreadBytes(java.lang.Object to, long offset, int count)Read count bytes and write them to the object at the given offset inside the in-memory representation of the object.intreadByteUnsigned()Reads a byte as an int from 0 to 255.charreadChar()Reads a 2 byte char.char[]readChars(int length)Reads a char array in bulk.doublereadDouble()Reads an 8 byte double.double[]readDoubles(int length)Reads a double array in bulk.floatreadFloat()Reads a 4 byte float.float[]readFloats(int length)Reads a float array in bulk.intreadInt()Reads a 4 byte int.int[]readInts(int length)Reads an int array in bulk.longreadLong()Reads an 8 byte long.long[]readLongs(int length)Reads a long array in bulk.shortreadShort()Reads a 2 byte short.short[]readShorts(int length)Reads a short array in bulk.voidsetBuffer(java.nio.ByteBuffer buffer)Sets a new buffer to read from.-
Methods inherited from class com.esotericsoftware.kryo.io.ByteBufferInput
canReadVarInt, canReadVarLong, close, fill, getBuffer, getByteBuffer, optional, read, read, readBytes, readShortUnsigned, readString, readStringBuilder, readVarInt, readVarIntFlag, readVarIntFlag, readVarLong, require, reset, setBuffer, setBuffer, setInputStream, setLimit, setPosition, skip, skip
-
Methods inherited from class com.esotericsoftware.kryo.io.Input
available, canReadInt, canReadLong, end, fill, getInputStream, getVariableLengthEncoding, limit, position, readBytes, readInt, readInts, readLong, readLongs, readVarDouble, readVarFloat, setTotal, setVariableLengthEncoding, total
-
-
-
-
Constructor Detail
-
UnsafeByteBufferInput
public UnsafeByteBufferInput()
Creates an uninitialized Input,setBuffer(ByteBuffer)must be called before the Input is used.
-
UnsafeByteBufferInput
public UnsafeByteBufferInput(int bufferSize)
Creates a new Input for reading from a directByteBuffer.- Parameters:
bufferSize- The size of the buffer. An exception is thrown if more bytes than this are read andByteBufferInput.fill(ByteBuffer, int, int)does not supply more bytes.
-
UnsafeByteBufferInput
public UnsafeByteBufferInput(byte[] bytes)
Creates a new Input for reading from aByteBufferwhich is filled with the specified bytes.
-
UnsafeByteBufferInput
public UnsafeByteBufferInput(byte[] bytes, int offset, int count)Creates a new Input for reading from aByteBufferwhich is filled with the specified bytes.
-
UnsafeByteBufferInput
public UnsafeByteBufferInput(java.nio.ByteBuffer buffer)
Creates a new Input for reading from a ByteBuffer.
-
UnsafeByteBufferInput
public UnsafeByteBufferInput(long address, int size)Creates a new Input for reading from a ByteBuffer representing the memory region at the specified address and size. @throws UnsupportedOperationException if creating a ByteBuffer this way is not available.
-
UnsafeByteBufferInput
public UnsafeByteBufferInput(java.io.InputStream inputStream)
Creates a new Input for reading from an InputStream with a buffer size of 4096.
-
UnsafeByteBufferInput
public UnsafeByteBufferInput(java.io.InputStream inputStream, int bufferSize)Creates a new Input for reading from an InputStream with the specified buffer size.
-
-
Method Detail
-
setBuffer
public void setBuffer(java.nio.ByteBuffer buffer)
Description copied from class:ByteBufferInputSets 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, limit, and capacity are set to match the specified buffer. The total is reset. TheInputStreamis set to null.- Overrides:
setBufferin classByteBufferInput
-
read
public int read() throws KryoExceptionDescription copied from class:InputReads a single byte as an int from 0 to 255, or -1 if there are no more bytes are available.- Overrides:
readin classByteBufferInput- Throws:
KryoException
-
readByte
public byte readByte() throws KryoExceptionDescription copied from class:InputReads a single byte.- Overrides:
readBytein classByteBufferInput- Throws:
KryoException
-
readByteUnsigned
public int readByteUnsigned() throws KryoExceptionDescription copied from class:InputReads a byte as an int from 0 to 255.- Overrides:
readByteUnsignedin classByteBufferInput- Throws:
KryoException
-
readInt
public int readInt() throws KryoExceptionDescription copied from class:InputReads a 4 byte int.- Overrides:
readIntin classByteBufferInput- Throws:
KryoException
-
readLong
public long readLong() throws KryoExceptionDescription copied from class:InputReads an 8 byte long.- Overrides:
readLongin classByteBufferInput- Throws:
KryoException
-
readFloat
public float readFloat() throws KryoExceptionDescription copied from class:InputReads a 4 byte float.- Overrides:
readFloatin classByteBufferInput- Throws:
KryoException
-
readDouble
public double readDouble() throws KryoExceptionDescription copied from class:InputReads an 8 byte double.- Overrides:
readDoublein classByteBufferInput- Throws:
KryoException
-
readShort
public short readShort() throws KryoExceptionDescription copied from class:InputReads a 2 byte short.- Overrides:
readShortin classByteBufferInput- Throws:
KryoException
-
readChar
public char readChar() throws KryoExceptionDescription copied from class:InputReads a 2 byte char.- Overrides:
readCharin classByteBufferInput- Throws:
KryoException
-
readBoolean
public boolean readBoolean() throws KryoExceptionDescription copied from class:InputReads a 1 byte boolean.- Overrides:
readBooleanin classByteBufferInput- Throws:
KryoException
-
readInts
public int[] readInts(int length) throws KryoExceptionDescription copied from class:InputReads an int array in bulk. This may be more efficient than reading them individually.- Overrides:
readIntsin classByteBufferInput- Throws:
KryoException
-
readLongs
public long[] readLongs(int length) throws KryoExceptionDescription copied from class:InputReads a long array in bulk. This may be more efficient than reading them individually.- Overrides:
readLongsin classByteBufferInput- Throws:
KryoException
-
readFloats
public float[] readFloats(int length) throws KryoExceptionDescription copied from class:InputReads a float array in bulk. This may be more efficient than reading them individually.- Overrides:
readFloatsin classByteBufferInput- Throws:
KryoException
-
readDoubles
public double[] readDoubles(int length) throws KryoExceptionDescription copied from class:InputReads a double array in bulk. This may be more efficient than reading them individually.- Overrides:
readDoublesin classByteBufferInput- Throws:
KryoException
-
readShorts
public short[] readShorts(int length) throws KryoExceptionDescription copied from class:InputReads a short array in bulk. This may be more efficient than reading them individually.- Overrides:
readShortsin classByteBufferInput- Throws:
KryoException
-
readChars
public char[] readChars(int length) throws KryoExceptionDescription copied from class:InputReads a char array in bulk. This may be more efficient than reading them individually.- Overrides:
readCharsin classByteBufferInput- Throws:
KryoException
-
readBooleans
public boolean[] readBooleans(int length) throws KryoExceptionDescription copied from class:InputReads a boolean array in bulk. This may be more efficient than reading them individually.- Overrides:
readBooleansin classByteBufferInput- Throws:
KryoException
-
readBytes
public void readBytes(byte[] bytes, int offset, int count) throws KryoExceptionDescription copied from class:InputReads count bytes and writes them to the specified byte[], starting at offset.- Overrides:
readBytesin classByteBufferInput- Throws:
KryoException
-
readBytes
public void readBytes(java.lang.Object to, long offset, int count) throws KryoExceptionRead count bytes and write them to the object at the given offset inside the in-memory representation of the object.- Throws:
KryoException
-
-