package ch.elexis.core.lock;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import ch.elexis.core.lock.types.LockInfo;
import ch.elexis.core.lock.types.LockResponse;
import ch.elexis.core.model.IPersistentObject;
import ch.elexis.core.server.ILockService;
/**
* Additional convinience methods for locking with PersistentObject.
*
* @author thomas
*
*/
public interface ILocalLockService extends ILockService {
public enum Status {
LOCAL, REMOTE, STANDALONE
}
public LockResponse acquireLock(IPersistentObject po);
public LockResponse releaseLock(IPersistentObject po);
public LockResponse releaseLock(LockInfo lockInfo);
public boolean isLocked(IPersistentObject po);
public boolean isLockedLocal(IPersistentObject po);
public LockResponse releaseAllLocks();
public List<LockInfo> getCopyOfAllHeldLocks();
public String getSystemUuid();
public LockResponse acquireLockBlocking(IPersistentObject po, int msTimeout,
IProgressMonitor monitor);
public Status getStatus();
public void shutdown();
}