Class LockManager

java.lang.Object
org.cryptomator.frontend.fuse.locks.LockManager

public class LockManager extends Object
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
     }