Class DatabaseFactory.EnvironmentHolder.DirectoryLock

  • Enclosing class:
    DatabaseFactory.EnvironmentHolder

    protected static class DatabaseFactory.EnvironmentHolder.DirectoryLock
    extends Object
    Directory based lock.

    A single instance of the DirectoryLock is not intended for inter thread locking. Multiple instance referring to the same File should be used instead.

    • Field Detail

      • m_dir

        protected File m_dir
        Directory to lock.
      • m_fstreamLocked

        protected FileOutputStream m_fstreamLocked
        The FileStream which the actual lock is held on.
      • m_lockDir

        protected FileLock m_lockDir
        The actual FileLock.
      • m_sLockText

        protected String m_sLockText
        Text to include in the lock file.
    • Constructor Detail

      • DirectoryLock

        public DirectoryLock​(File dir,
                             String sLockText)
        Create a DirectoryLock which can be used to try to lock a directory. The object is created in an unlocked state.
        Parameters:
        dir - the directory to lock
        sLockText - the text to include in the lock file
    • Method Detail

      • tryLock

        public boolean tryLock()
                        throws IOException
        Try to lock the directory.
        Returns:
        true if a lock is obtained, false if it is locked by another DirectoryLock
        Throws:
        IOException - if an IO error occurs while creating the lock file
      • tryUnlock

        public boolean tryUnlock()
                          throws IOException
        Try to unlock the directory.
        Returns:
        true if a lock is released, false if the directory was not locked by this DirectoryLock
        Throws:
        IOException - if an IO error occurs while deleting the lock file, the lock may be left in an unlocked state
      • finalize

        protected void finalize()
                         throws Throwable
        Automatically release the lock on finalization.

        The OS will ensure that the lock is released regardless but this allows the lock file to be deleted as well.

        Overrides:
        finalize in class Object
        Throws:
        Throwable - if an error occurs