blob: 996fa6f1e608a0739f58da168abeec61e44ab217 [file] [log] [blame]
pankaj390abbc2014-10-01 17:01:05 -07001package org.onlab.metrics;
2
3import java.util.concurrent.ConcurrentHashMap;
4import java.util.concurrent.ConcurrentMap;
5
6/**
7 * Components to register for metrics.
8 */
9public class MetricsComponent implements MetricsComponentRegistry {
10 private final String name;
11
12 /**
13 * Registry to hold the Features defined in this Component.
14 */
15 private final ConcurrentMap<String, MetricsFeature> featuresRegistry =
16 new ConcurrentHashMap<>();
17
18 /**
19 * Constructs a component from a name.
20 *
21 * @param newName name of the component
22 */
23 MetricsComponent(final String newName) {
24 name = newName;
25 }
26
27 @Override public String getName() {
28 return name;
29 }
30
31 @Override public MetricsFeature registerFeature(final String featureName) {
32 MetricsFeature feature = featuresRegistry.get(featureName);
33 if (feature == null) {
34 final MetricsFeature createdFeature = new MetricsFeature(featureName);
35 feature = featuresRegistry.putIfAbsent(featureName, createdFeature);
36 if (feature == null) {
37 feature = createdFeature;
38 }
39 }
40 return feature;
41 }
42}