package org.stagemonitor.core.metrics; import com.codahale.metrics.Snapshot; import java.io.OutputStream; class AggregatedSnapshot extends Snapshot { private int addCount = 0; private long max, min; private double mean, stdDev, median, p75, p95, p98, p99, p999; AggregatedSnapshot(Snapshot snapshot) { this.max = snapshot.getMax(); this.min = snapshot.getMin(); } public void add(Snapshot snapshot) { max = Math.max(max, snapshot.getMax()); min = Math.min(min, snapshot.getMin()); mean = MetricsAggregationReporter.computeMovingAverage(mean, addCount, snapshot.getMean()); stdDev = MetricsAggregationReporter.computeMovingAverage(stdDev, addCount, snapshot.getStdDev()); median = MetricsAggregationReporter.computeMovingAverage(median, addCount, snapshot.getMedian()); p75 = MetricsAggregationReporter.computeMovingAverage(p75, addCount, snapshot.get75thPercentile()); p95 = MetricsAggregationReporter.computeMovingAverage(p95, addCount, snapshot.get95thPercentile()); p98 = MetricsAggregationReporter.computeMovingAverage(p98, addCount, snapshot.get98thPercentile()); p99 = MetricsAggregationReporter.computeMovingAverage(p99, addCount, snapshot.get99thPercentile()); p999 = MetricsAggregationReporter.computeMovingAverage(p999, addCount, snapshot.get999thPercentile()); addCount++; } @Override public double getValue(double quantile) { return 0; } @Override public long[] getValues() { return new long[0]; } @Override public int size() { return 0; } @Override public long getMax() { return max; } @Override public double getMean() { return mean; } @Override public long getMin() { return min; } @Override public double getStdDev() { return stdDev; } @Override public double getMedian() { return median; } @Override public double get75thPercentile() { return p75; } @Override public double get95thPercentile() { return p95; } @Override public double get98thPercentile() { return p98; } @Override public double get99thPercentile() { return p99; } @Override public double get999thPercentile() { return p999; } @Override public void dump(OutputStream output) { } }