diff options
Diffstat (limited to 'main/client/src/mill/main/client/Locks.java')
-rw-r--r-- | main/client/src/mill/main/client/Locks.java | 20 |
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(); + } } |