Interface RxSherlock

All Known Implementing Classes:
RxSherlockStub

public interface RxSherlock
Manages distributed locks using RXJava API.
  • Method Details

    • rxSherlock

      static RxSherlock rxSherlock(com.coditory.sherlock.ReactiveSherlock locks)
      Maps reactive sherlock to a one using RxJava API
      Parameters:
      locks - reactive locks to be wrapped in RxJava api
      Returns:
      RxJava version of sherlock locks
    • initialize

      io.reactivex.Single<com.coditory.sherlock.connector.InitializationResult> initialize()
      Initializes underlying infrastructure. If this method is not invoked explicitly then it can be invoked implicitly when acquiring or releasing a lock for the first time.

      Most often initialization is related with creating indexes and tables.

      Returns:
      InitializationResult.SUCCESS if initialization was successful, otherwise InitializationResult.FAILURE is returned
    • createLock

      com.coditory.sherlock.DistributedLockBuilder<RxDistributedLock> createLock()
      Creates a distributed lock. Created lock may be acquired only once by the same owner:
      
       assert lock.acquire() == true
       assert lock.acquire() == false
       
      Returns:
      the lock builder
    • createLock

      default RxDistributedLock createLock(String lockId)
      Creates a lock with default configuration.
      Parameters:
      lockId - lock identifier
      Returns:
      the lock
      See Also:
    • createReentrantLock

      com.coditory.sherlock.DistributedLockBuilder<RxDistributedLock> createReentrantLock()
      Creates a distributed reentrant lock. Reentrant lock may be acquired multiple times by the same owner:
      
       assert reentrantLock.acquire() == true
       assert reentrantLock.acquire() == true
       
      Returns:
      the reentrant lock builder
    • createReentrantLock

      default RxDistributedLock createReentrantLock(String lockId)
      Creates a reentrant lock with default configuration.
      Parameters:
      lockId - lock identifier
      Returns:
      the reentrant lock
      See Also:
    • createOverridingLock

      com.coditory.sherlock.DistributedLockBuilder<RxDistributedLock> createOverridingLock()
      Create a distributed overriding lock. Returned lock may acquire or release any other lock without checking its state:
      
       assert someLock.acquire() == true
       assert overridingLock.acquire() == true
       

      It could be used for administrative actions.

      Returns:
      the overriding lock builder
    • createOverridingLock

      default RxDistributedLock createOverridingLock(String lockId)
      Creates an overriding lock with default configuration.
      Parameters:
      lockId - lock identifier
      Returns:
      the overriding lock
      See Also:
    • forceReleaseAllLocks

      io.reactivex.Single<com.coditory.sherlock.connector.ReleaseResult> forceReleaseAllLocks()
      Force releases all acquired locks.

      It could be used for administrative actions.

      Returns:
      ReleaseResult.SUCCESS if lock was released, otherwise ReleaseResult.FAILURE is returned
    • forceReleaseLock

      default io.reactivex.Single<com.coditory.sherlock.connector.ReleaseResult> forceReleaseLock(String lockId)
      Force releases a lock.

      It could be used for administrative actions.

      Parameters:
      lockId - lock identifier
      Returns:
      ReleaseResult.SUCCESS if lock was released, otherwise ReleaseResult.FAILURE is returned