package org.ovirt.engine.core.utils.lock;
/**
* The following interface is represent a lock mechanism
*/
public interface LockManager {
/**
* The following method will try to acquire provided lock
* @param lock
* @return true - in case of locked was acquired , false - otherwise
*/
boolean acquireLock(EngineLock lock);
/**
* The following method will try to acquire lock and will wait until lock acquired
* @param lock
*/
void acquireLockWait(EngineLock lock);
/**
* The following method will release a lock Also it will notify all threads awaiting inside acquireLockWait that
* some lock was released and they can try to acquire a lock
* @param lock
*/
void releaseLock(EngineLock lock);
/**
* The following method will clear all inserted locks
*/
void clear();
}