/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.hadoop.metrics2.lib; import org.apache.hadoop.metrics2.Metric; /** * Factory class for mutable metrics */ public class MetricMutableFactory { static final String DEFAULT_SAMPLE_NAME = "ops"; static final String DEFAULT_VALUE_NAME = "time"; /** * Create a new mutable metric by name * Usually overridden by app specific factory * @param name of the metric * @return a new metric object */ public MetricMutable newMetric(String name) { return null; } /** * Create a mutable integer counter * @param name of the metric * @param description of the metric * @param initValue of the metric * @return a new metric object */ public MetricMutableCounterInt newCounter(String name, String description, int initValue) { return new MetricMutableCounterInt(name, description, initValue); } /** * Create a mutable integer counter with name only. * Usually gets overridden. * @param name of the metric * @return a new metric object */ public MetricMutableCounterInt newCounterInt(String name) { return new MetricMutableCounterInt(name, Metric.NO_DESCRIPTION, 0); } /** * Create a mutable long integer counter * @param name of the metric * @param description of the metric * @param initValue of the metric * @return a new metric object */ public MetricMutableCounterLong newCounter(String name, String description, long initValue) { return new MetricMutableCounterLong(name, description, initValue); } /** * Create a mutable long integer counter with a name * Usually gets overridden. * @param name of the metric * @return a new metric object */ public MetricMutableCounterLong newCounterLong(String name) { return new MetricMutableCounterLong(name, Metric.NO_DESCRIPTION, 0L); } /** * Create a mutable integer gauge * @param name of the metric * @param description of the metric * @param initValue of the metric * @return a new metric object */ public MetricMutableGaugeInt newGauge(String name, String description, int initValue) { return new MetricMutableGaugeInt(name, description, initValue); } /** * Create a mutable integer gauge with name only. * Usually gets overridden. * @param name of the metric * @return a new metric object */ public MetricMutableGaugeInt newGaugeInt(String name) { return new MetricMutableGaugeInt(name, Metric.NO_DESCRIPTION, 0); } /** * Create a mutable long integer gauge * @param name of the metric * @param description of the metric * @param initValue of the metric * @return a new metric object */ public MetricMutableGaugeLong newGauge(String name, String description, long initValue) { return new MetricMutableGaugeLong(name, description, initValue); } /** * Create a mutable long integer gauge with name only. * Usually gets overridden. * @param name of the metric * @return a new metric object */ public MetricMutableGaugeLong newGaugeLong(String name) { return new MetricMutableGaugeLong(name, Metric.NO_DESCRIPTION, 0L); } /** * Create a mutable stat metric * @param name of the metric * @param description of the metric * @param sampleName of the metric (e.g., ops) * @param valueName of the metric (e.g., time or latency) * @param extended if true, produces extended stat (stdev, min/max etc.) * @return a new metric object */ public MetricMutableStat newStat(String name, String description, String sampleName, String valueName, boolean extended) { return new MetricMutableStat(name, description, sampleName, valueName, extended); } /** * Create a mutable stat metric with name only. * Usually gets overridden. * @param name of the metric * @return a new metric object */ public MetricMutableStat newStat(String name) { return new MetricMutableStat(name, name, DEFAULT_SAMPLE_NAME, DEFAULT_VALUE_NAME); } }