package io.cattle.platform.lock; import io.cattle.platform.lock.definition.LockDefinition; import io.cattle.platform.lock.provider.LockProvider; public interface LockManager { <T, E extends Throwable> T lock(LockDefinition lockDef, LockCallbackWithException<T, E> callback, Class<E> clz) throws E; <T> T lock(LockDefinition lockDef, LockCallback<T> callback); <T> T tryLock(LockDefinition lockDef, LockCallback<T> callback); <T, E extends Throwable> T tryLock(LockDefinition lockDef, LockCallbackWithException<T, E> callback, Class<E> clz) throws E; LockProvider getLockProvider(); }