java.lang.Object
org.cryptomator.frontend.fuse.locks.LockManager
Provides a path-based locking mechanism as described by
Ritik Malhotra here.
Usage Example 1:
try (var pathLock = lockManager.lockForReading("/foo/bar/baz"); // path is not manipulated, thus read-locking
var dataLock = pathLock.lockDataForWriting()) { // content is manipulated, thus write-locking
// write to file
}
Usage Example 2:
try (var srcPathLock = lockManager.lockForReading("/foo/bar/original");
var srcDataLock = srcPathLock.lockDataForReading(); // content will only be read, thus read-locking
var dstPathLock = lockManager.lockForWriting("/foo/bar/copy"); // file will be created, thus write-locking
var dstDataLock = srcPathLock.lockDataForWriting()) {
// copy from /foo/bar/original to /foo/bar/copy
}
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionlockForReading(String path) lockForWriting(String path) tryLockForWriting(String path)
-
Constructor Details
-
LockManager
public LockManager()
-
-
Method Details
-
tryLockForWriting
- Throws:
AlreadyLockedException
-
lockForReading
-
lockForWriting
-