org.mapdb.volume / ByteBufferVolSingle


abstract class ByteBufferVolSingle : Volume

Abstract Volume over single ByteBuffer, maximal size is 2GB (32bit limit). It leaves ByteBufferVol details (allocation, disposal) on subclasses. Most methods are final for better performance (JIT compiler can inline those).

Inherited Properties


If sun.misc.Unsafe is available it will use Volume based on Unsafe. If Unsafe is not available for some reason (Android), use DirectByteBuffer instead.


clear open fun clear(startOffset: Long, endOffset: Long): Unit
copyTo open fun copyTo(inputOffset: Long, target: Volume, targetOffset: Long, size: Long): Unit
ensureAvailable open fun ensureAvailable(offset: Long): Unit
getByte fun getByte(offset: Long): Byte
getData open fun getData(offset: Long, src: ByteArray, srcPos: Int, srcSize: Int): Unit
getDataInput fun getDataInput(offset: Long, size: Int): ByteBuffer
getDataInputOverlap open fun getDataInputOverlap(offset: Long, size: Int): DataInput2
getInt fun getInt(offset: Long): Int
getLong fun getLong(offset: Long): Long
isSliced open fun isSliced(): Boolean
putByte fun putByte(offset: Long, value: Byte): Unit
putData open fun putData(offset: Long, src: ByteArray, srcPos: Int, srcSize: Int): Unit
fun putData(offset: Long, buf: ByteBuffer): Unit
putDataOverlap open fun putDataOverlap(offset: Long, data: ByteArray, pos: Int, len: Int): Unit
putInt fun putInt(offset: Long, value: Int): Unit
putLong fun putLong(offset: Long, value: Long): Unit
sliceSize open fun sliceSize(): Int

Inherited Functions

assertZeroes open fun assertZeroes(startOffset: Long, endOffset: Long): Unit

Check that all bytes between given offsets are zero. This might cross 1MB boundaries

clearOverlap open fun clearOverlap(startOffset: Long, endOffset: Long): Unit
close abstract fun close(): Unit
copyFrom open fun copyFrom(input: InputStream): Unit

Copy content from InputStream into this Volume.

copyTo open fun copyTo(to: Volume): Unit

Copy content of this volume to another. Target volume might grow, but is never shrank. Target is also not synced

open fun copyTo(output: OutputStream): Unit

Copy content of this volume to OutputStream.

deleteFile open fun deleteFile(): Unit
fileLoad open fun fileLoad(): Boolean

If underlying storage is memory-mapped-file, this method will try to load and precache all file data into disk cache. Most likely it will call MappedByteBuffer#load(), but could also read content of entire file etc This method will not pin data into memory, they might be removed at any time.

getFile abstract fun getFile(): File

returns underlying file if it exists

getFileLocked abstract fun getFileLocked(): Boolean

return true if this Volume holds exclusive lock over its file

getPackedLong open fun getPackedLong(position: Long): Long

Unpack long value from the Volume. Highest 4 bits reused to indicate number of bytes read from Volume. One can use result & DataIO.PACK_LONG_RESULT_MASK to remove size;

getSixLong open fun getSixLong(pos: Long): Long
getUnsignedByte open fun getUnsignedByte(offset: Long): Int
getUnsignedShort open fun getUnsignedShort(offset: Long): Int
hash open fun hash(off: Long, len: Long, seed: Long): Long

Calculates XXHash64 from this Volume content.

isClosed open fun isClosed(): Boolean
isReadOnly abstract fun isReadOnly(): Boolean
length abstract fun length(): Long
putPackedLong open fun putPackedLong(pos: Long, value: Long): Int

Put packed long at given position.

putSixLong open fun putSixLong(pos: Long, value: Long): Unit
putUnsignedByte open fun putUnsignedByte(offset: Long, b: Int): Unit
putUnsignedShort open fun putUnsignedShort(offset: Long, value: Int): Unit
sync abstract fun sync(): Unit
truncate abstract fun truncate(size: Long): Unit


ByteBufferMemoryVolSingle class ByteBufferMemoryVolSingle : ByteBufferVolSingle

Created by jan on 3/13/16.

MappedFileVolSingle class MappedFileVolSingle : ByteBufferVolSingle

Created by jan on 2/29/16.