org.infinispan.transaction.totalorder.TotalOrderLatchImpl Maven / Gradle / Ivy
package org.infinispan.transaction.totalorder;
import java.util.concurrent.CountDownLatch;
/**
* Implementation of {@code TotalOrderLatch}
*
* @author Pedro Ruivo
* @since 5.3
*/
public class TotalOrderLatchImpl implements TotalOrderLatch {
private final String name;
private final CountDownLatch latch;
public TotalOrderLatchImpl(String name) {
if (name == null) {
throw new NullPointerException("Name cannot be null");
}
this.name = name;
this.latch = new CountDownLatch(1);
}
@Override
public boolean isBlocked() {
return latch.getCount() > 0;
}
@Override
public void unBlock() {
latch.countDown();
}
@Override
public void awaitUntilUnBlock() throws InterruptedException {
latch.await();
}
@Override
public String toString() {
return "TotalOrderLatchImpl{" +
"latch=" + latch +
", name='" + name + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
TotalOrderLatchImpl that = (TotalOrderLatchImpl) o;
return name.equals(that.name);
}
@Override
public int hashCode() {
return name.hashCode();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy