summaryrefslogtreecommitdiff
path: root/main/client/src/mill/main/client/Locks.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/client/src/mill/main/client/Locks.java')
-rw-r--r--main/client/src/mill/main/client/Locks.java20
1 files changed, 19 insertions, 1 deletions
diff --git a/main/client/src/mill/main/client/Locks.java b/main/client/src/mill/main/client/Locks.java
index 2843973d..64259293 100644
--- a/main/client/src/mill/main/client/Locks.java
+++ b/main/client/src/mill/main/client/Locks.java
@@ -4,7 +4,7 @@ import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import java.util.concurrent.locks.ReentrantLock;
-public class Locks{
+public class Locks implements AutoCloseable{
public Lock processLock;
public Lock serverLock;
public Lock clientLock;
@@ -24,6 +24,13 @@ public class Locks{
this.clientLock = new MemoryLock();
}};
}
+
+ @Override
+ public void close() throws Exception {
+ processLock.close();
+ serverLock.close();
+ clientLock.close();
+ }
}
class FileLocked implements Locked{
private java.nio.channels.FileLock lock;
@@ -61,6 +68,12 @@ class FileLock extends Lock{
return true;
}
}
+
+ @Override
+ public void close() throws Exception {
+ raf.close();
+ chan.close();
+ }
}
class MemoryLocked implements Locked{
java.util.concurrent.locks.Lock l;
@@ -86,4 +99,9 @@ class MemoryLock extends Lock{
if (innerLock.tryLock()) return new MemoryLocked(innerLock);
else return null;
}
+
+ @Override
+ public void close() throws Exception {
+ innerLock.unlock();
+ }
}