/*
* Created on 08.01.2008
* Caleido AG, All Rights Reserved
* Author: Luzius Meisser
*/
package quickbase.internal.files;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.channels.FileLock;
import quickbase.exception.BasicFileOperationDatabaseException;
public class Lock {
public static final String SUFFIX = ".lock";
private File file;
private RandomAccessFile raf;
private FileLock lock;
public Lock(File path, String name) throws BasicFileOperationDatabaseException{
try {
this.file = new File(path, name + SUFFIX);
this.raf = new RandomAccessFile(file, "rw");
this.lock = raf.getChannel().tryLock();
if (lock == null){
throw new BasicFileOperationDatabaseException("Could not acquire lock for " + file);
}
} catch (IOException e) {
throw new BasicFileOperationDatabaseException(e);
}
}
public void release() throws IOException{
lock.release();
raf.close();
file.delete();
}
}