package io.pcp.parfait.dropwizard.metricadapters;
import javax.measure.Unit;
import java.util.Set;
import io.pcp.parfait.dropwizard.MetricAdapter;
import io.pcp.parfait.dropwizard.NonSelfRegisteringSettableValue;
import com.codahale.metrics.Gauge;
import io.pcp.parfait.Monitorable;
import io.pcp.parfait.ValueSemantics;
import com.google.common.collect.Sets;
public class GaugeAdapter<T> implements MetricAdapter {
private final Gauge<T> theGauge;
private final NonSelfRegisteringSettableValue<T> monitoredValue;
@SuppressWarnings("PMD.ExcessiveParameterList")
public GaugeAdapter(Gauge<T> theGauge, String name, String description, Unit<?> unit, ValueSemantics valueSemantics) {
this.theGauge = theGauge;
this.monitoredValue = new NonSelfRegisteringSettableValue<>(name, description, unit, theGauge.getValue(), valueSemantics);
}
@Override
public Set<Monitorable> getMonitorables() {
return Sets.<Monitorable>newHashSet(monitoredValue);
}
@Override
public void updateMonitorables() {
monitoredValue.set(theGauge.getValue());
}
}