001 /*
002 * OutputRecord.java
003 *
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing, software
015 * distributed under the License is distributed on an "AS IS" BASIS,
016 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017 * See the License for the specific language governing permissions and
018 * limitations under the License.
019 */
020
021 package org.apache.hadoop.metrics.spi;
022
023 import java.util.Collections;
024 import java.util.Map;
025 import java.util.Set;
026 import java.util.TreeMap;
027 import java.util.Map.Entry;
028
029 import org.apache.hadoop.classification.InterfaceAudience;
030 import org.apache.hadoop.classification.InterfaceStability;
031 import org.apache.hadoop.metrics.spi.AbstractMetricsContext.MetricMap;
032 import org.apache.hadoop.metrics.spi.AbstractMetricsContext.TagMap;
033
034 /**
035 * Represents a record of metric data to be sent to a metrics system.
036 */
037 @InterfaceAudience.Public
038 @InterfaceStability.Evolving
039 public class OutputRecord {
040
041 private TagMap tagMap;
042 private MetricMap metricMap;
043
044 /** Creates a new instance of OutputRecord */
045 OutputRecord(TagMap tagMap, MetricMap metricMap) {
046 this.tagMap = tagMap;
047 this.metricMap = metricMap;
048 }
049
050 /**
051 * Returns the set of tag names
052 */
053 public Set<String> getTagNames() {
054 return Collections.unmodifiableSet(tagMap.keySet());
055 }
056
057 /**
058 * Returns a tag object which is can be a String, Integer, Short or Byte.
059 *
060 * @return the tag value, or null if there is no such tag
061 */
062 public Object getTag(String name) {
063 return tagMap.get(name);
064 }
065
066 /**
067 * Returns the set of metric names.
068 */
069 public Set<String> getMetricNames() {
070 return Collections.unmodifiableSet(metricMap.keySet());
071 }
072
073 /**
074 * Returns the metric object which can be a Float, Integer, Short or Byte.
075 */
076 public Number getMetric(String name) {
077 return metricMap.get(name);
078 }
079
080
081 /**
082 * Returns a copy of this record's tags.
083 */
084 public TagMap getTagsCopy() {
085 return new TagMap(tagMap);
086 }
087
088 /**
089 * Returns a copy of this record's metrics.
090 */
091 public MetricMap getMetricsCopy() {
092 return new MetricMap(metricMap);
093 }
094 }