package org.mapdb.volume; import java.io.File; import java.nio.ByteBuffer; import java.nio.MappedByteBuffer; /** * Created by jan on 3/13/16. */ public final class ByteBufferMemoryVolSingle extends ByteBufferVolSingle { protected final boolean useDirectBuffer; @Override public String toString() { return super.toString() + ",direct=" + useDirectBuffer; } public ByteBufferMemoryVolSingle(final boolean useDirectBuffer, final long maxSize, boolean cleanerHackEnabled) { super(false, maxSize, cleanerHackEnabled); this.useDirectBuffer = useDirectBuffer; this.buffer = useDirectBuffer ? ByteBuffer.allocateDirect((int) maxSize) : ByteBuffer.allocate((int) maxSize); } @Override public void truncate(long size) { //TODO truncate } @Override synchronized public void close() { if (!closed.compareAndSet(false,true)) return; if (cleanerHackEnabled && buffer instanceof MappedByteBuffer) { ByteBufferVol.unmap((MappedByteBuffer) buffer); } buffer = null; } @Override public void sync() { } @Override public long length() { return maxSize; } @Override public boolean isReadOnly() { return false; } @Override public File getFile() { return null; } @Override public boolean getFileLocked() { return false; } }