package org.act.tstream.metric;
import java.util.Map;
import java.util.HashMap;
import java.util.Map.Entry;
import java.io.Serializable;
import com.codahale.metrics.Metric;
import com.codahale.metrics.Gauge;
import com.codahale.metrics.Sampling;
import com.codahale.metrics.Snapshot;
import com.codahale.metrics.Timer;
import com.codahale.metrics.Counter;
import com.codahale.metrics.Histogram;
import com.codahale.metrics.Meter;
import org.act.tstream.client.metric.MetricCallback;
import org.act.tstream.metric.MetricInfo;
/**
* /storm-zk-root/Monitor/{topologyid}/UserDefMetrics/{workerid} data
*/
public class UserDefMetric {
private static final long serialVersionUID = 4547327064057659279L;
private Map<String, Gauge<?>> gaugeMap = new HashMap<String, Gauge<?>>();
private Map<String, Counter> counterMap = new HashMap<String, Counter>();
private Map<String, Histogram> histogramMap = new HashMap<String, Histogram>();
private Map<String, Timer> timerMap = new HashMap<String, Timer>();
private Map<String, Meter> meterMap = new HashMap<String, Meter>();
private Map<String, MetricCallback> callbacks = new HashMap<String, MetricCallback>();
public UserDefMetric() {
}
public Map<String, Gauge<?>> getGauge() {
return this.gaugeMap;
}
public void registerCallback(MetricCallback callback, String name) {
if (callbacks.containsKey(name) != true) {
callbacks.put(name, callback);
}
}
public void unregisterCallback(String name) {
callbacks.remove(name);
}
public Map<String, MetricCallback> getCallbacks() {
return callbacks;
}
public void addToGauge(String name, Gauge<?> gauge) {
gaugeMap.put(name, gauge);
}
public Map<String, Counter> getCounter() {
return this.counterMap;
}
public void addToCounter(String name, Counter counter) {
counterMap.put(name, counter);
}
public Map<String, Histogram> getHistogram() {
return this.histogramMap;
}
public void addToHistogram(String name, Histogram histogram) {
histogramMap.put(name, histogram);
}
public Map<String, Timer> getTimer() {
return this.timerMap;
}
public void addToTimer(String name, Timer timer) {
timerMap.put(name, timer);
}
public Map<String, Meter> getMeter() {
return this.meterMap;
}
public void addToMeter(String name, Meter meter) {
meterMap.put(name, meter);
}
public void remove(String name) {
if (gaugeMap.containsKey(name)) {
gaugeMap.remove(name);
} else if (counterMap.containsKey(name)) {
counterMap.remove(name);
} else if (histogramMap.containsKey(name)) {
histogramMap.remove(name);
} else if (timerMap.containsKey(name)) {
timerMap.remove(name);
} else if (meterMap.containsKey(name)) {
meterMap.remove(name);
}
if (callbacks.containsKey(name)) {
callbacks.remove(name);
}
}
}