package org.infinispan.counter;
import java.util.Objects;
import org.infinispan.counter.api.WeakCounter;
import org.infinispan.counter.util.Utils;
/**
* A {@link WeakCounter} decorator that waits for the operation to complete.
*
* @author Pedro Ruivo
* @see WeakCounter
* @since 9.0
*/
public class SyncWeakCounter {
private final WeakCounter counter;
public SyncWeakCounter(WeakCounter counter) {
this.counter = Objects.requireNonNull(counter);
}
/**
* @see WeakCounter#getName()
*/
public String getName() {
return counter.getName();
}
/**
* @see WeakCounter#getValue()
*/
public long getValue() {
return counter.getValue();
}
/**
* @see WeakCounter#increment()
*/
public void increment() {
Utils.awaitCounterOperation(counter.increment());
}
/**
* @see WeakCounter#decrement()
*/
public void decrement() {
Utils.awaitCounterOperation(counter.decrement());
}
/**
* @see WeakCounter#add(long)
*/
public void add(long delta) {
Utils.awaitCounterOperation(counter.add(delta));
}
/**
* @see WeakCounter#reset()
*/
public void reset() {
Utils.awaitCounterOperation(counter.reset());
}
@Override
public String toString() {
return "SyncWeakCounter{" +
"counter=" + counter +
'}';
}
}