1
2
3
4
5
6
7 package org.mule.util.counters.impl;
8
9 import org.mule.util.counters.CounterFactory.Type;
10
11 public class InstantRate extends AggregateCounter
12 {
13
14 private double firstTime;
15 private double lastTime;
16 private double value;
17
18 public InstantRate(String name, AbstractCounter base)
19 {
20 super(name, Type.INSTANT_RATE, base);
21 }
22
23 public double nextValue()
24 {
25 if (firstTime == 0 || firstTime == lastTime)
26 {
27 return Double.NaN;
28 }
29 else
30 {
31 return value / (lastTime - firstTime) * 1000.0;
32 }
33 }
34
35 public void doCompute()
36 {
37 firstTime = lastTime;
38 lastTime = System.currentTimeMillis();
39 value = getBase().nextValue();
40 }
41
42 }