MetricsRegistry.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:2k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.metrics.util;
  19. import java.util.Collection;
  20. import java.util.HashMap;
  21. import java.util.Map;
  22. import java.util.Set;
  23. import java.util.Map.Entry;
  24. /**
  25.  * 
  26.  * This is the registry for metrics.
  27.  * Related set of metrics should be declared in a holding class and registered
  28.  * in a registry for those metrics which is also stored in the the holding class.
  29.  *
  30.  */
  31. public class MetricsRegistry {
  32.   private Map<String, MetricsBase> metricsList = new HashMap<String, MetricsBase>();
  33.   public MetricsRegistry() {
  34.   }
  35.   
  36.   /**
  37.    * 
  38.    * @return number of metrics in the registry
  39.    */
  40.   public int size() {
  41.     return metricsList.size();
  42.   }
  43.   
  44.   /**
  45.    * Add a new metrics to the registry
  46.    * @param metricsName - the name
  47.    * @param theMetricsObj - the metrics
  48.    * @throws IllegalArgumentException if a name is already registered
  49.    */
  50.   public synchronized void add(final String metricsName, final MetricsBase theMetricsObj) {
  51.     if (metricsList.containsKey(metricsName)) {
  52.       throw new IllegalArgumentException("Duplicate metricsName:" + metricsName);
  53.     }
  54.     metricsList.put(metricsName, theMetricsObj);
  55.   }
  56.   
  57.   /**
  58.    * 
  59.    * @param metricsName
  60.    * @return the metrics if there is one registered by the supplied name.
  61.    *         Returns null if none is registered
  62.    */
  63.   public synchronized MetricsBase get(final String metricsName) {
  64.     return metricsList.get(metricsName);
  65.   }
  66.   
  67.   
  68.   /**
  69.    * 
  70.    * @return the list of metrics names
  71.    */
  72.   public synchronized Collection<String> getKeyList() {
  73.     return metricsList.keySet();
  74.   }
  75.   
  76.   /**
  77.    * 
  78.    * @return the list of metrics
  79.    */
  80.   public synchronized Collection<MetricsBase> getMetricsList() {
  81.     return metricsList.values();
  82.   }
  83. }