/** * */ package net.varkhan.base.management.report; import net.varkhan.base.management.monitor.derived.MonitorContinuousAverage; import net.varkhan.base.management.monitor.primitive.MonitorDouble; import net.varkhan.base.management.monitor.primitive.MonitorDoubleWritable; /** * <b>.</b> * <p/> * * @author varkhan * @date Nov 12, 2009 * @time 8:11:54 AM */ public class JMXAverageMonitorReport extends JMXMonitorReport<MonitorDouble> { /** * @param path */ public JMXAverageMonitorReport(long halflife, String... path) { super(path); hl=halflife; } private long hl; public void add(String name, MonitorContinuousAverage m) { super.add(name, m); } public void del(String name) { super.del(name); } public MonitorDouble get(String name) { MonitorDouble m=super.get(name); if(m!=null) return m; MonitorDoubleWritable v=new MonitorDoubleWritable(0); MonitorContinuousAverage a=new MonitorContinuousAverage(v.count(), v, hl); super.add(name, v); super.add(name+".avg", a); return v; } public void inc(String name, double val) { MonitorDouble m=get(name); if(m instanceof MonitorDoubleWritable) { MonitorDoubleWritable v=(MonitorDoubleWritable) m; v.inc(val); } } public void inc(String name) { MonitorDouble m=get(name); if(m instanceof MonitorDoubleWritable) { MonitorDoubleWritable v=(MonitorDoubleWritable) m; v.inc(1.0); } } }