Package uk.ac.starlink.table.storage
Class NioByteStoreAccess
- java.lang.Object
-
- uk.ac.starlink.table.storage.NioByteStoreAccess
-
- All Implemented Interfaces:
ByteStoreAccess
public abstract class NioByteStoreAccess extends java.lang.Object implements ByteStoreAccess
Partial implementation of ByteStoreAccess. Not thread-safe.- Since:
- 20 Aug 2010
- Author:
- Mark Taylor
-
-
Constructor Summary
Constructors Constructor Description NioByteStoreAccess()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static java.nio.ByteBuffer[]
copyBuffers(java.nio.ByteBuffer[] bufs)
Utility method to make a deep copy of an array of ByteBuffers.static ByteStoreAccess
createAccess(java.nio.ByteBuffer[] bbufs)
Returns a reader implementation for an array of ByteBuffers.protected abstract java.nio.ByteBuffer
getBuffer(int nbyte)
Returns a buffer with at least the requested number of bytes between the current position and the limit.byte
readByte()
Reads a byte from the current position.void
readBytes(byte[] b, int offset, int length)
Reads bytes into a buffer from the current position.char
readChar()
Reads a char from the current position.double
readDouble()
Reads a double from the current position.float
readFloat()
Reads a float from the current position.int
readInt()
Reads an int from the current position.long
readLong()
Reads a long from the current position.short
readShort()
Reads a short from the current position.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface uk.ac.starlink.table.storage.ByteStoreAccess
seek, skip
-
-
-
-
Method Detail
-
getBuffer
protected abstract java.nio.ByteBuffer getBuffer(int nbyte) throws java.io.IOException
Returns a buffer with at least the requested number of bytes between the current position and the limit. Whennbyte
bytes have been read from the returned buffer, the current position of this ByteStoreAccess will have advanced bynbyte
bytes. The position in the case that this call is made with no corresponding read is undefined, so it's important that the read is actually done (don't call this method speculatively).If no such buffer is available (the end of the storage has been reached), then an IOException will be thrown.
- Parameters:
nbyte
- number of bytes required- Returns:
- buffer from which
nbyte
bytes can be read - Throws:
java.io.IOException
-
readByte
public byte readByte() throws java.io.IOException
Description copied from interface:ByteStoreAccess
Reads a byte from the current position.- Specified by:
readByte
in interfaceByteStoreAccess
- Returns:
- read value
- Throws:
java.io.IOException
-
readShort
public short readShort() throws java.io.IOException
Description copied from interface:ByteStoreAccess
Reads a short from the current position.- Specified by:
readShort
in interfaceByteStoreAccess
- Returns:
- read value
- Throws:
java.io.IOException
-
readChar
public char readChar() throws java.io.IOException
Description copied from interface:ByteStoreAccess
Reads a char from the current position.- Specified by:
readChar
in interfaceByteStoreAccess
- Returns:
- read value
- Throws:
java.io.IOException
-
readInt
public int readInt() throws java.io.IOException
Description copied from interface:ByteStoreAccess
Reads an int from the current position.- Specified by:
readInt
in interfaceByteStoreAccess
- Returns:
- read value
- Throws:
java.io.IOException
-
readLong
public long readLong() throws java.io.IOException
Description copied from interface:ByteStoreAccess
Reads a long from the current position.- Specified by:
readLong
in interfaceByteStoreAccess
- Returns:
- read value
- Throws:
java.io.IOException
-
readFloat
public float readFloat() throws java.io.IOException
Description copied from interface:ByteStoreAccess
Reads a float from the current position.- Specified by:
readFloat
in interfaceByteStoreAccess
- Returns:
- read value
- Throws:
java.io.IOException
-
readDouble
public double readDouble() throws java.io.IOException
Description copied from interface:ByteStoreAccess
Reads a double from the current position.- Specified by:
readDouble
in interfaceByteStoreAccess
- Returns:
- read value
- Throws:
java.io.IOException
-
readBytes
public void readBytes(byte[] b, int offset, int length) throws java.io.IOException
Description copied from interface:ByteStoreAccess
Reads bytes into a buffer from the current position.- Specified by:
readBytes
in interfaceByteStoreAccess
- Parameters:
b
- buffer to receive bytesoffset
- offset intob
for first bytelength
- number of bytes to read- Throws:
java.io.IOException
-
copyBuffers
public static java.nio.ByteBuffer[] copyBuffers(java.nio.ByteBuffer[] bufs)
Utility method to make a deep copy of an array of ByteBuffers.- Parameters:
bufs
- input buffers- Returns:
- matching array with buffers that are duplicates of the input elements
-
createAccess
public static ByteStoreAccess createAccess(java.nio.ByteBuffer[] bbufs)
Returns a reader implementation for an array of ByteBuffers.- Parameters:
bbufs
- buffer array- Returns:
- reader implementation
-
-