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 ByteStoreAccesscreateAccess(java.nio.ByteBuffer[] bbufs)Returns a reader implementation for an array of ByteBuffers.protected abstract java.nio.ByteBuffergetBuffer(int nbyte)Returns a buffer with at least the requested number of bytes between the current position and the limit.bytereadByte()Reads a byte from the current position.voidreadBytes(byte[] b, int offset, int length)Reads bytes into a buffer from the current position.charreadChar()Reads a char from the current position.doublereadDouble()Reads a double from the current position.floatreadFloat()Reads a float from the current position.intreadInt()Reads an int from the current position.longreadLong()Reads a long from the current position.shortreadShort()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.IOExceptionReturns a buffer with at least the requested number of bytes between the current position and the limit. Whennbytebytes have been read from the returned buffer, the current position of this ByteStoreAccess will have advanced bynbytebytes. 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
nbytebytes can be read - Throws:
java.io.IOException
-
readByte
public byte readByte() throws java.io.IOExceptionDescription copied from interface:ByteStoreAccessReads a byte from the current position.- Specified by:
readBytein interfaceByteStoreAccess- Returns:
- read value
- Throws:
java.io.IOException
-
readShort
public short readShort() throws java.io.IOExceptionDescription copied from interface:ByteStoreAccessReads a short from the current position.- Specified by:
readShortin interfaceByteStoreAccess- Returns:
- read value
- Throws:
java.io.IOException
-
readChar
public char readChar() throws java.io.IOExceptionDescription copied from interface:ByteStoreAccessReads a char from the current position.- Specified by:
readCharin interfaceByteStoreAccess- Returns:
- read value
- Throws:
java.io.IOException
-
readInt
public int readInt() throws java.io.IOExceptionDescription copied from interface:ByteStoreAccessReads an int from the current position.- Specified by:
readIntin interfaceByteStoreAccess- Returns:
- read value
- Throws:
java.io.IOException
-
readLong
public long readLong() throws java.io.IOExceptionDescription copied from interface:ByteStoreAccessReads a long from the current position.- Specified by:
readLongin interfaceByteStoreAccess- Returns:
- read value
- Throws:
java.io.IOException
-
readFloat
public float readFloat() throws java.io.IOExceptionDescription copied from interface:ByteStoreAccessReads a float from the current position.- Specified by:
readFloatin interfaceByteStoreAccess- Returns:
- read value
- Throws:
java.io.IOException
-
readDouble
public double readDouble() throws java.io.IOExceptionDescription copied from interface:ByteStoreAccessReads a double from the current position.- Specified by:
readDoublein interfaceByteStoreAccess- Returns:
- read value
- Throws:
java.io.IOException
-
readBytes
public void readBytes(byte[] b, int offset, int length) throws java.io.IOExceptionDescription copied from interface:ByteStoreAccessReads bytes into a buffer from the current position.- Specified by:
readBytesin interfaceByteStoreAccess- Parameters:
b- buffer to receive bytesoffset- offset intobfor 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
-
-