KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mule > util > counters > impl > TimeAverage


1 /*
2  * $Id: TimeAverage.java 3167 2006-09-22 15:47:04Z holger $
3  * --------------------------------------------------------------------------------------
4  * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com
5  *
6  * The software in this package is published under the terms of the MuleSource MPL
7  * license, a copy of which has been included with this distribution in the
8  * LICENSE.txt file.
9  */

10
11 package org.mule.util.counters.impl;
12
13 import org.mule.util.counters.CounterFactory.Type;
14
15 /**
16  * @author <a HREF="mailto:gnt@codehaus.org">Guillaume Nodet</a>
17  * @version $Revision: 3167 $
18  */

19 public class TimeAverage extends AggregateCounter
20 {
21
22     private double sum = 0.0;
23     private double lastValue = 0.0;
24     private long firstTime = System.currentTimeMillis();
25     private long lastTime = firstTime;
26
27     public TimeAverage(String JavaDoc name, AbstractCounter base)
28     {
29         super(name, Type.AVERAGE, base);
30     }
31
32     public double nextValue()
33     {
34         long current = System.currentTimeMillis();
35         return (sum + lastValue * (current - this.lastTime)) / (current - firstTime);
36     }
37
38     public void doCompute()
39     {
40         long current = System.currentTimeMillis();
41         this.sum += this.lastValue * (current - this.lastTime);
42         this.lastValue = getBase().nextValue();
43         this.lastTime = current;
44     }
45 }
46
Popular Tags