Line data Source code
1 : // Copyright (C) 2015 The Android Open Source Project 2 : // 3 : // Licensed under the Apache License, Version 2.0 (the "License"); 4 : // you may not use this file except in compliance with the License. 5 : // You may obtain a copy of the License at 6 : // 7 : // http://www.apache.org/licenses/LICENSE-2.0 8 : // 9 : // Unless required by applicable law or agreed to in writing, software 10 : // distributed under the License is distributed on an "AS IS" BASIS, 11 : // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 : // See the License for the specific language governing permissions and 13 : // limitations under the License. 14 : 15 : package com.google.gerrit.metrics.dropwizard; 16 : 17 : import com.google.gerrit.metrics.Description; 18 : import com.google.gerrit.metrics.Field; 19 : import com.google.gerrit.metrics.Timer1; 20 : import java.util.concurrent.TimeUnit; 21 : import java.util.function.Function; 22 : 23 : /** Optimized version of {@link BucketedTimer} for single dimension. */ 24 : class TimerImpl1<F1> extends BucketedTimer implements BucketedMetric { 25 : TimerImpl1(DropWizardMetricMaker metrics, String name, Description desc, Field<F1> field1) { 26 15 : super(metrics, name, desc, field1); 27 15 : } 28 : 29 : @SuppressWarnings("unchecked") 30 : Timer1<F1> timer() { 31 15 : return new Timer1<>(name, (Field<F1>) fields[0]) { 32 : @Override 33 : protected void doRecord(F1 field1, long value, TimeUnit unit) { 34 15 : total.record(value, unit); 35 15 : forceCreate(field1).record(value, unit); 36 15 : } 37 : 38 : @Override 39 : public void remove() { 40 0 : doRemove(); 41 0 : } 42 : }; 43 : } 44 : 45 : @Override 46 : String name(Object field1) { 47 : @SuppressWarnings("unchecked") 48 15 : Function<Object, String> fmt = (Function<Object, String>) fields[0].formatter(); 49 : 50 15 : return fmt.apply(field1).replace('/', '-'); 51 : } 52 : }