package org.infinispan.util.concurrent.locks.impl;
import java.util.Collection;
import java.util.concurrent.TimeUnit;
import org.infinispan.context.impl.TxInvocationContext;
import org.infinispan.util.concurrent.locks.PendingLockManager;
import org.infinispan.util.concurrent.locks.PendingLockPromise;
/**
* An {@link PendingLockManager} implementation that does nothing.
*
* @author Pedro Ruivo
* @since 8.0
*/
public class NoOpPendingLockManager implements PendingLockManager {
private NoOpPendingLockManager() {
}
public static NoOpPendingLockManager getInstance() {
return Wrapper.INSTANCE;
}
@Override
public PendingLockPromise checkPendingTransactionsForKey(TxInvocationContext<?> ctx, Object key, long time, TimeUnit unit) {
return PendingLockPromise.NO_OP;
}
@Override
public PendingLockPromise checkPendingTransactionsForKeys(TxInvocationContext<?> ctx, Collection<Object> keys, long time, TimeUnit unit) {
return PendingLockPromise.NO_OP;
}
@Override
public long awaitPendingTransactionsForKey(TxInvocationContext<?> ctx, Object key, long time, TimeUnit unit) throws InterruptedException {
return unit.toMillis(time);
}
@Override
public long awaitPendingTransactionsForAllKeys(TxInvocationContext<?> ctx, Collection<Object> keys, long time, TimeUnit unit) throws InterruptedException {
return unit.toMillis(time);
}
private static class Wrapper {
private static final NoOpPendingLockManager INSTANCE = new NoOpPendingLockManager();
}
}