aboutsummaryrefslogtreecommitdiffstats
path: root/simplemetrics/src/main/java/com/yahoo/metrics/simple/jdisc/JdiscMetricsFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'simplemetrics/src/main/java/com/yahoo/metrics/simple/jdisc/JdiscMetricsFactory.java')
-rw-r--r--simplemetrics/src/main/java/com/yahoo/metrics/simple/jdisc/JdiscMetricsFactory.java61
1 files changed, 61 insertions, 0 deletions
diff --git a/simplemetrics/src/main/java/com/yahoo/metrics/simple/jdisc/JdiscMetricsFactory.java b/simplemetrics/src/main/java/com/yahoo/metrics/simple/jdisc/JdiscMetricsFactory.java
new file mode 100644
index 00000000000..f5208b2226c
--- /dev/null
+++ b/simplemetrics/src/main/java/com/yahoo/metrics/simple/jdisc/JdiscMetricsFactory.java
@@ -0,0 +1,61 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.metrics.simple.jdisc;
+
+import java.io.PrintStream;
+import java.util.logging.Logger;
+
+import com.yahoo.container.jdisc.MetricConsumerFactory;
+import com.yahoo.container.jdisc.state.MetricSnapshot;
+import com.yahoo.container.jdisc.state.SnapshotProvider;
+import com.yahoo.jdisc.application.MetricConsumer;
+import com.yahoo.metrics.simple.Bucket;
+import com.yahoo.metrics.simple.MetricReceiver;
+
+/**
+ * A factory for all the JDisc API classes.
+ *
+ * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
+ */
+public class JdiscMetricsFactory implements MetricConsumerFactory, SnapshotProvider {
+ private static final Logger log = Logger.getLogger(JdiscMetricsFactory.class.getName());
+ private final SimpleMetricConsumer metricInstance;
+ private final MetricReceiver metricReceiver;
+
+ public JdiscMetricsFactory(MetricReceiver receiver) {
+ this.metricReceiver = receiver;
+ this.metricInstance = new SimpleMetricConsumer(receiver);
+ }
+
+ @Override
+ public MetricConsumer newInstance() {
+ // the underlying implementation is thread safe anyway to allow for stand-alone use
+ return metricInstance;
+ }
+
+
+ @Override
+ public MetricSnapshot latestSnapshot() {
+ Bucket curr = metricReceiver.getSnapshot();
+ if (curr == null) {
+ log.warning("no snapshot from instance of " + metricInstance.getClass());
+ return null;
+ } else {
+ SnapshotConverter converter = new SnapshotConverter(curr);
+ return converter.convert();
+ }
+ }
+
+ @Override
+ public void histogram(PrintStream output) {
+ Bucket curr = metricReceiver.getSnapshot();
+ if (curr == null) {
+ log.warning("no snapshot from instance of " + metricInstance.getClass());
+ return;
+ } else {
+ SnapshotConverter converter = new SnapshotConverter(curr);
+ converter.outputHistograms(output);
+ return;
+ }
+ }
+
+}