Class FileMemData

java.lang.Object
org.h2.store.fs.mem.FileMemData

class FileMemData 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_SIZE

      private static final int CACHE_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:
    • LZF

      private static final CompressLZF LZF
    • BUFFER

      private static final byte[] BUFFER
    • COMPRESSED_EMPTY_BLOCK

      private static final byte[] COMPRESSED_EMPTY_BLOCK
    • COMPRESS_LATER

    • name

      private String name
    • id

      private final int id
    • compress

      private final boolean compress
    • length

      private volatile long length
    • data

      private AtomicReference<byte[]>[] data
    • lastModified

      private long lastModified
    • isReadOnly

      private boolean isReadOnly
    • isLockedExclusive

      private boolean isLockedExclusive
    • sharedLockCount

      private int sharedLockCount
  • Constructor Details

    • FileMemData

      FileMemData(String name, boolean compress)
  • Method Details

    • getPage

      private byte[] getPage(int page)
      Get the page if it exists.
      Parameters:
      page - the page id
      Returns:
      the byte array, or null
    • setPage

      private void setPage(int page, byte[] oldData, byte[] newData, boolean force)
      Set the page data.
      Parameters:
      page - the page id
      oldData - the old data
      newData - the new data
      force - whether the data should be overwritten even if the old data doesn't match
    • getId

      int getId()
    • 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() throws IOException
      Unlock the file.
      Throws:
      IOException
    • compressLater

      private void compressLater(int page)
    • expand

      private byte[] expand(int page)
    • compress

      void compress(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, byte[] 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