package io.pcp.parfait; import static tec.uom.se.AbstractUnit.ONE; import java.util.concurrent.atomic.AtomicLong; import javax.measure.Unit; /** * {@link Monitorable} implementation for a free-running Long value. */ public class MonitoredLongValue extends MonitoredNumeric<AtomicLong> implements Counter { public MonitoredLongValue(String name, String description, MonitorableRegistry registry, Long initialValue) { this(name, description, registry, initialValue, ONE); } public MonitoredLongValue(String name, String description, Long initialValue) { this(name, description, MonitorableRegistry.DEFAULT_REGISTRY, initialValue, ONE); } public MonitoredLongValue(String name, String description, MonitorableRegistry registry, Long initialValue, Unit<?> unit) { super(name, description, registry, new AtomicLong(initialValue), unit); } /** * Convenience method to increment atomic numeric types. */ public void inc() { inc(1); } @Override public void inc(int delta) { value.addAndGet(delta); notifyMonitors(); } /** * Convenience method to decrement atomic numeric types. */ public void dec() { dec(1); } @Override public void dec(int delta) { inc(-delta); } @Override public void inc(long increment) { value.addAndGet(increment); notifyMonitors(); } }