package org.stagemonitor.core.metrics;
import com.codahale.metrics.SlidingWindowReservoir;
import com.codahale.metrics.Snapshot;
import com.codahale.metrics.Timer;
import java.util.concurrent.TimeUnit;
/**
* An extension of timer that aggregates multiple snapshots of a timer to a single value for each metric.
*/
class AggregatedTimer extends Timer {
private long count;
private double rate;
private AggregatedSnapshot snapshot;
AggregatedTimer(Timer timer) {
super(new SlidingWindowReservoir(0));
this.snapshot = new AggregatedSnapshot(timer.getSnapshot());
add(timer);
}
public void add(Timer timer) {
count = timer.getCount();
rate = timer.getMeanRate();
snapshot.add(timer.getSnapshot());
}
@Override
public void update(long duration, TimeUnit unit) {
}
@Override
public long getCount() {
return count;
}
@Override
public double getFifteenMinuteRate() {
return rate;
}
@Override
public double getFiveMinuteRate() {
return rate;
}
@Override
public double getMeanRate() {
return rate;
}
@Override
public double getOneMinuteRate() {
return rate;
}
@Override
public Snapshot getSnapshot() {
return snapshot;
}
}