//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.core.metrics; import com.codahale.metrics.Counter; import com.codahale.metrics.Histogram; import com.codahale.metrics.Meter; import com.codahale.metrics.Timer; /** * Class specific metrics provider, access through {@link MetricsFactoryTest}. * * * */ public class Metrics { public static final String SEP = ":"; private final MetricsFactory factory; private final String base; /** * Better to use {@link MetricsFactoryTest} function to get an instance. * * @param metrics * @param prefix * @param clazz */ public Metrics(MetricsFactory factory, String prefix, Class<?> clazz) { this.factory = factory; this.base = prefix + SEP + clazz.getCanonicalName(); } /** * Better to use {@link MetricsFactoryTest} function to get an instance. * * @param metrics * @param clazz */ public Metrics(MetricsFactory metrics, Class<?> clazz) { this.factory = metrics; this.base = clazz.getCanonicalName(); } /** * Get or create a new timer. * * @param name * @return */ public Timer getTimer(String name) { return factory.getTimer(base, name); } /** * Get or create a new counter. * * @param name * @return */ public Counter getCounter(String name) { return factory.getCounter(base, name); } /** * Get or create a new histogram. * * @param name * @return */ public Histogram getHistogram(String name) { return factory.getHistogram(base, name); } /** * Get or create a new meter. * * @param name * @return */ public Meter getMeter(String name) { return factory.getMeter(base, name); } /** * Get the base name use for metrics created. * * Package level - use for testing only. * * @return the base name */ String getBase() { return base; } }