Package org.h2.store.fs.niomem
Class FileNioMemData
java.lang.Object
org.h2.store.fs.niomem.FileNioMemData
This class contains the data of an in-memory random access file.
Data compression using the LZF algorithm is supported as well.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static class
Represents a compressed item.(package private) static class
This small cache compresses the data if an element leaves the cache. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final int
private static final int
private static final int
private AtomicReference<ByteBuffer>[]
private static final int
private final boolean
private static final ThreadLocal
<byte[]> the output buffer when compressingprivate static final ByteBuffer
private final FileNioMemData.CompressLaterCache
<FileNioMemData.CompressItem, FileNioMemData.CompressItem> private final float
private boolean
private boolean
private long
private long
private static final ThreadLocal
<CompressLZF> private String
(package private) final int
The hash code of the name.private final ReentrantReadWriteLock
private int
-
Constructor Summary
ConstructorsConstructorDescriptionFileNioMemData
(String name, boolean compress, float compressLaterCachePercent) -
Method Summary
Modifier and TypeMethodDescriptionprivate void
addToCompressLaterCache
(int page) (package private) boolean
canWrite()
Check whether writing is allowed.private void
changeLength
(long len) (package private) void
compressPage
(int page) Compress the data in a byte array.private ByteBuffer
expandPage
(int page) (package private) long
Get the last modified time.(package private) String
getName()
Get the file name(package private) long
length()
Get the file length.(package private) boolean
Lock the file in exclusive mode if possible.(package private) boolean
Lock the file in shared mode if possible.(package private) long
readWrite
(long pos, ByteBuffer b, int off, int len, boolean write) Read or write.(package private) void
Set the file name.(package private) boolean
Set the read-only flag.(package private) void
touch
(boolean openReadOnly) Update the last modified time.(package private) void
truncate
(long newLength) Truncate the file.(package private) void
unlock()
Unlock the file.
-
Field Details
-
CACHE_MIN_SIZE
private static final int CACHE_MIN_SIZE- See Also:
-
BLOCK_SIZE_SHIFT
private static final int BLOCK_SIZE_SHIFT- See Also:
-
BLOCK_SIZE
private static final int BLOCK_SIZE- See Also:
-
BLOCK_SIZE_MASK
private static final int BLOCK_SIZE_MASK- See Also:
-
COMPRESSED_EMPTY_BLOCK
-
LZF_THREAD_LOCAL
-
COMPRESS_OUT_BUF_THREAD_LOCAL
the output buffer when compressing -
nameHashCode
final int nameHashCodeThe hash code of the name. -
compressLaterCache
private final FileNioMemData.CompressLaterCache<FileNioMemData.CompressItem,FileNioMemData.CompressItem> compressLaterCache -
name
-
compress
private final boolean compress -
compressLaterCachePercent
private final float compressLaterCachePercent -
length
private volatile long length -
buffers
-
lastModified
private long lastModified -
isReadOnly
private boolean isReadOnly -
isLockedExclusive
private boolean isLockedExclusive -
rwLock
-
-
Constructor Details
-
FileNioMemData
FileNioMemData(String name, boolean compress, float compressLaterCachePercent)
-
-
Method Details
-
lockExclusive
boolean lockExclusive()Lock the file in exclusive mode if possible.- Returns:
- if locking was successful
-
unlock
void unlock()Unlock the file. -
addToCompressLaterCache
private void addToCompressLaterCache(int page) -
expandPage
-
compressPage
void compressPage(int page) Compress the data in a byte array.- Parameters:
page
- which page to compress
-
touch
void touch(boolean openReadOnly) Update the last modified time.- Parameters:
openReadOnly
- if the file was opened in read-only mode
-
length
long length()Get the file length.- Returns:
- the length
-
truncate
void truncate(long newLength) Truncate the file.- Parameters:
newLength
- the new length
-
changeLength
private void changeLength(long len) -
readWrite
Read or write.- Parameters:
pos
- the positionb
- the byte arrayoff
- the offset within the byte arraylen
- the number of byteswrite
- true for writing- Returns:
- the new position
-
setName
Set the file name.- Parameters:
name
- the name
-
getName
String getName()Get the file name- Returns:
- the name
-
getLastModified
long getLastModified()Get the last modified time.- Returns:
- the time
-
canWrite
boolean canWrite()Check whether writing is allowed.- Returns:
- true if it is
-
setReadOnly
boolean setReadOnly()Set the read-only flag.- Returns:
- true
-