001/**
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019package org.apache.hadoop.hbase.regionserver;
020
021import org.apache.hadoop.conf.Configuration;
022import org.apache.yetus.audience.InterfaceAudience;
023
024@InterfaceAudience.Private
025public class MetricsUserAggregateFactory {
026  private MetricsUserAggregateFactory() {
027
028  }
029
030  public static final String METRIC_USER_ENABLED_CONF = "hbase.regionserver.user.metrics.enabled";
031  public static final boolean DEFAULT_METRIC_USER_ENABLED_CONF = true;
032
033  public static MetricsUserAggregate getMetricsUserAggregate(Configuration conf) {
034    if (conf.getBoolean(METRIC_USER_ENABLED_CONF, DEFAULT_METRIC_USER_ENABLED_CONF)) {
035      return new MetricsUserAggregateImpl(conf);
036    } else {
037      //NoOpMetricUserAggregate
038      return new MetricsUserAggregate() {
039        @Override public MetricsUserAggregateSource getSource() {
040          return null;
041        }
042
043        @Override public void updatePut(long t) {
044
045        }
046
047        @Override public void updateDelete(long t) {
048
049        }
050
051        @Override public void updateGet(long t) {
052
053        }
054
055        @Override public void updateIncrement(long t) {
056
057        }
058
059        @Override public void updateAppend(long t) {
060
061        }
062
063        @Override public void updateReplay(long t) {
064
065        }
066
067        @Override public void updateScanTime(long t) {
068
069        }
070
071        @Override public void updateFilteredReadRequests() {
072
073        }
074
075        @Override public void updateReadRequestCount() {
076
077        }
078      };
079    }
080  }
081
082}