01: /*
02: * $Id: TimeAverage.java 8077 2007-08-27 20:15:25Z aperepel $
03: * --------------------------------------------------------------------------------------
04: * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com
05: *
06: * The software in this package is published under the terms of the CPAL v1.0
07: * license, a copy of which has been included with this distribution in the
08: * LICENSE.txt file.
09: */
10:
11: package org.mule.util.counters.impl;
12:
13: import org.mule.util.counters.CounterFactory.Type;
14:
15: public class TimeAverage extends AggregateCounter {
16:
17: private double sum = 0.0;
18: private double lastValue = 0.0;
19: private final long firstTime = System.currentTimeMillis();
20: private long lastTime = firstTime;
21:
22: public TimeAverage(String name, AbstractCounter base) {
23: super (name, Type.AVERAGE, base);
24: }
25:
26: public double nextValue() {
27: long current = System.currentTimeMillis();
28: return (sum + lastValue * (current - this .lastTime))
29: / (current - firstTime);
30: }
31:
32: public void doCompute() {
33: long current = System.currentTimeMillis();
34: this.sum += this.lastValue * (current - this.lastTime);
35: this.lastValue = getBase().nextValue();
36: this.lastTime = current;
37: }
38:
39: }
|