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

网格计算

开发平台:

Java

  1. /*
  2.  * MetricsRecordImpl.java
  3.  *
  4.  * Licensed to the Apache Software Foundation (ASF) under one
  5.  * or more contributor license agreements.  See the NOTICE file
  6.  * distributed with this work for additional information
  7.  * regarding copyright ownership.  The ASF licenses this file
  8.  * to you under the Apache License, Version 2.0 (the
  9.  * "License"); you may not use this file except in compliance
  10.  * with the License.  You may obtain a copy of the License at
  11.  *
  12.  *     http://www.apache.org/licenses/LICENSE-2.0
  13.  *
  14.  * Unless required by applicable law or agreed to in writing, software
  15.  * distributed under the License is distributed on an "AS IS" BASIS,
  16.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17.  * See the License for the specific language governing permissions and
  18.  * limitations under the License.
  19.  */
  20. package org.apache.hadoop.metrics.spi;
  21. import java.util.LinkedHashMap;
  22. import java.util.Map;
  23. import org.apache.hadoop.metrics.MetricsRecord;
  24. import org.apache.hadoop.metrics.spi.AbstractMetricsContext.TagMap;
  25. /**
  26.  * An implementation of MetricsRecord.  Keeps a back-pointer to the context
  27.  * from which it was created, and delegates back to it on <code>update</code>
  28.  * and <code>remove()</code>.
  29.  */
  30. public class MetricsRecordImpl implements MetricsRecord {
  31.     
  32.   private TagMap tagTable = new TagMap();
  33.   private Map<String,MetricValue> metricTable = new LinkedHashMap<String,MetricValue>();
  34.     
  35.   private String recordName;
  36.   private AbstractMetricsContext context;
  37.     
  38.     
  39.   /** Creates a new instance of FileRecord */
  40.   protected MetricsRecordImpl(String recordName, AbstractMetricsContext context)
  41.   {
  42.     this.recordName = recordName;
  43.     this.context = context;
  44.   }
  45.     
  46.   /**
  47.    * Returns the record name. 
  48.    *
  49.    * @return the record name
  50.    */
  51.   public String getRecordName() {
  52.     return recordName;
  53.   }
  54.     
  55.   /**
  56.    * Sets the named tag to the specified value.
  57.    *
  58.    * @param tagName name of the tag
  59.    * @param tagValue new value of the tag
  60.    * @throws MetricsException if the tagName conflicts with the configuration
  61.    */
  62.   public void setTag(String tagName, String tagValue) {
  63.     if (tagValue == null) {
  64.       tagValue = "";
  65.     }
  66.     tagTable.put(tagName, tagValue);
  67.   }
  68.     
  69.   /**
  70.    * Sets the named tag to the specified value.
  71.    *
  72.    * @param tagName name of the tag
  73.    * @param tagValue new value of the tag
  74.    * @throws MetricsException if the tagName conflicts with the configuration
  75.    */
  76.   public void setTag(String tagName, int tagValue) {
  77.     tagTable.put(tagName, Integer.valueOf(tagValue));
  78.   }
  79.     
  80.   /**
  81.    * Sets the named tag to the specified value.
  82.    *
  83.    * @param tagName name of the tag
  84.    * @param tagValue new value of the tag
  85.    * @throws MetricsException if the tagName conflicts with the configuration
  86.    */
  87.   public void setTag(String tagName, long tagValue) {
  88.     tagTable.put(tagName, Long.valueOf(tagValue));
  89.   }
  90.     
  91.   /**
  92.    * Sets the named tag to the specified value.
  93.    *
  94.    * @param tagName name of the tag
  95.    * @param tagValue new value of the tag
  96.    * @throws MetricsException if the tagName conflicts with the configuration
  97.    */
  98.   public void setTag(String tagName, short tagValue) {
  99.     tagTable.put(tagName, Short.valueOf(tagValue));
  100.   }
  101.     
  102.   /**
  103.    * Sets the named tag to the specified value.
  104.    *
  105.    * @param tagName name of the tag
  106.    * @param tagValue new value of the tag
  107.    * @throws MetricsException if the tagName conflicts with the configuration
  108.    */
  109.   public void setTag(String tagName, byte tagValue) {
  110.     tagTable.put(tagName, Byte.valueOf(tagValue));
  111.   }
  112.     
  113.   /**
  114.    * Removes any tag of the specified name.
  115.    */
  116.   public void removeTag(String tagName) {
  117.     tagTable.remove(tagName);
  118.   }
  119.   
  120.   /**
  121.    * Sets the named metric to the specified value.
  122.    *
  123.    * @param metricName name of the metric
  124.    * @param metricValue new value of the metric
  125.    * @throws MetricsException if the metricName or the type of the metricValue 
  126.    * conflicts with the configuration
  127.    */
  128.   public void setMetric(String metricName, int metricValue) {
  129.     setAbsolute(metricName, Integer.valueOf(metricValue));
  130.   }
  131.     
  132.   /**
  133.    * Sets the named metric to the specified value.
  134.    *
  135.    * @param metricName name of the metric
  136.    * @param metricValue new value of the metric
  137.    * @throws MetricsException if the metricName or the type of the metricValue 
  138.    * conflicts with the configuration
  139.    */
  140.   public void setMetric(String metricName, long metricValue) {
  141.     setAbsolute(metricName, Long.valueOf(metricValue));
  142.   }
  143.     
  144.   /**
  145.    * Sets the named metric to the specified value.
  146.    *
  147.    * @param metricName name of the metric
  148.    * @param metricValue new value of the metric
  149.    * @throws MetricsException if the metricName or the type of the metricValue 
  150.    * conflicts with the configuration
  151.    */
  152.   public void setMetric(String metricName, short metricValue) {
  153.     setAbsolute(metricName, Short.valueOf(metricValue));
  154.   }
  155.     
  156.   /**
  157.    * Sets the named metric to the specified value.
  158.    *
  159.    * @param metricName name of the metric
  160.    * @param metricValue new value of the metric
  161.    * @throws MetricsException if the metricName or the type of the metricValue 
  162.    * conflicts with the configuration
  163.    */
  164.   public void setMetric(String metricName, byte metricValue) {
  165.     setAbsolute(metricName, Byte.valueOf(metricValue));
  166.   }
  167.     
  168.   /**
  169.    * Sets the named metric to the specified value.
  170.    *
  171.    * @param metricName name of the metric
  172.    * @param metricValue new value of the metric
  173.    * @throws MetricsException if the metricName or the type of the metricValue 
  174.    * conflicts with the configuration
  175.    */
  176.   public void setMetric(String metricName, float metricValue) {
  177.     setAbsolute(metricName, new Float(metricValue));
  178.   }
  179.     
  180.   /**
  181.    * Increments the named metric by the specified value.
  182.    *
  183.    * @param metricName name of the metric
  184.    * @param metricValue incremental value
  185.    * @throws MetricsException if the metricName or the type of the metricValue 
  186.    * conflicts with the configuration
  187.    */
  188.   public void incrMetric(String metricName, int metricValue) {
  189.     setIncrement(metricName, Integer.valueOf(metricValue));
  190.   }
  191.     
  192.   /**
  193.    * Increments the named metric by the specified value.
  194.    *
  195.    * @param metricName name of the metric
  196.    * @param metricValue incremental value
  197.    * @throws MetricsException if the metricName or the type of the metricValue 
  198.    * conflicts with the configuration
  199.    */
  200.   public void incrMetric(String metricName, long metricValue) {
  201.     setIncrement(metricName, Long.valueOf(metricValue));
  202.   }
  203.     
  204.   /**
  205.    * Increments the named metric by the specified value.
  206.    *
  207.    * @param metricName name of the metric
  208.    * @param metricValue incremental value
  209.    * @throws MetricsException if the metricName or the type of the metricValue 
  210.    * conflicts with the configuration
  211.    */
  212.   public void incrMetric(String metricName, short metricValue) {
  213.     setIncrement(metricName, Short.valueOf(metricValue));
  214.   }
  215.     
  216.   /**
  217.    * Increments the named metric by the specified value.
  218.    *
  219.    * @param metricName name of the metric
  220.    * @param metricValue incremental value
  221.    * @throws MetricsException if the metricName or the type of the metricValue 
  222.    * conflicts with the configuration
  223.    */
  224.   public void incrMetric(String metricName, byte metricValue) {
  225.     setIncrement(metricName, Byte.valueOf(metricValue));
  226.   }
  227.     
  228.   /**
  229.    * Increments the named metric by the specified value.
  230.    *
  231.    * @param metricName name of the metric
  232.    * @param metricValue incremental value
  233.    * @throws MetricsException if the metricName or the type of the metricValue 
  234.    * conflicts with the configuration
  235.    */
  236.   public void incrMetric(String metricName, float metricValue) {
  237.     setIncrement(metricName, new Float(metricValue));
  238.   }
  239.     
  240.   private void setAbsolute(String metricName, Number metricValue) {
  241.     metricTable.put(metricName, new MetricValue(metricValue, MetricValue.ABSOLUTE));
  242.   }
  243.     
  244.   private void setIncrement(String metricName, Number metricValue) {
  245.     metricTable.put(metricName, new MetricValue(metricValue, MetricValue.INCREMENT));
  246.   }
  247.     
  248.   /**
  249.    * Updates the table of buffered data which is to be sent periodically.
  250.    * If the tag values match an existing row, that row is updated; 
  251.    * otherwise, a new row is added.
  252.    */
  253.   public void update() {
  254.     context.update(this);
  255.   }
  256.     
  257.   /**
  258.    * Removes the row, if it exists, in the buffered data table having tags 
  259.    * that equal the tags that have been set on this record. 
  260.    */
  261.   public void remove() {
  262.     context.remove(this);
  263.   }
  264.   TagMap getTagTable() {
  265.     return tagTable;
  266.   }
  267.   Map<String, MetricValue> getMetricTable() {
  268.     return metricTable;
  269.   }
  270. }