01: /*
02: * $Id: InstantRate.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 InstantRate extends AggregateCounter {
16:
17: private double firstTime;
18: private double lastTime;
19: private double value;
20:
21: public InstantRate(String name, AbstractCounter base) {
22: super (name, Type.INSTANT_RATE, base);
23: }
24:
25: public double nextValue() {
26: if (firstTime == 0 || firstTime == lastTime) {
27: return Double.NaN;
28: } else {
29: return value / (lastTime - firstTime) * 1000.0;
30: }
31: }
32:
33: public void doCompute() {
34: firstTime = lastTime;
35: lastTime = System.currentTimeMillis();
36: value = getBase().nextValue();
37: }
38:
39: }
|