Class FileNioMemData

java.lang.Object
org.h2.store.fs.niomem.FileNioMemData

class FileNioMemData extends Object
This class contains the data of an in-memory random access file. Data compression using the LZF algorithm is supported as well.
  • 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

      private static final ByteBuffer COMPRESSED_EMPTY_BLOCK
    • LZF_THREAD_LOCAL

      private static final ThreadLocal<CompressLZF> LZF_THREAD_LOCAL
    • COMPRESS_OUT_BUF_THREAD_LOCAL

      private static final ThreadLocal<byte[]> COMPRESS_OUT_BUF_THREAD_LOCAL
      the output buffer when compressing
    • nameHashCode

      final int nameHashCode
      The hash code of the name.
    • compressLaterCache

    • name

      private String name
    • compress

      private final boolean compress
    • compressLaterCachePercent

      private final float compressLaterCachePercent
    • length

      private volatile long length
    • buffers

      private AtomicReference<ByteBuffer>[] buffers
    • lastModified

      private long lastModified
    • isReadOnly

      private boolean isReadOnly
    • isLockedExclusive

      private boolean isLockedExclusive
    • sharedLockCount

      private int sharedLockCount
    • rwLock

      private final ReentrantReadWriteLock 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
    • lockShared

      boolean lockShared()
      Lock the file in shared mode if possible.
      Returns:
      if locking was successful
    • unlock

      void unlock()
      Unlock the file.
    • addToCompressLaterCache

      private void addToCompressLaterCache(int page)
    • expandPage

      private ByteBuffer expandPage(int page)
    • 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

      long readWrite(long pos, ByteBuffer b, int off, int len, boolean write)
      Read or write.
      Parameters:
      pos - the position
      b - the byte array
      off - the offset within the byte array
      len - the number of bytes
      write - true for writing
      Returns:
      the new position
    • setName

      void setName(String name)
      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