1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.metrics.impl;
19
20 import java.util.concurrent.TimeUnit;
21
22 import org.apache.hadoop.hbase.classification.InterfaceAudience;
23 import org.apache.hadoop.hbase.metrics.Timer;
24
25
26
27
28 @InterfaceAudience.Private
29 public class TimerImpl implements Timer {
30 private final HistogramImpl histogram;
31 private final DropwizardMeter meter;
32
33
34 private static final TimeUnit DEFAULT_UNIT = TimeUnit.MICROSECONDS;
35
36 public TimerImpl() {
37 this.histogram = new HistogramImpl();
38 this.meter = new DropwizardMeter();
39 }
40
41 @Override
42 public void update(long duration, TimeUnit unit) {
43 if (duration >= 0) {
44 histogram.update(DEFAULT_UNIT.convert(duration, unit));
45 meter.mark();
46 }
47 }
48
49 @Override
50 public HistogramImpl getHistogram() {
51 return histogram;
52 }
53
54 @Override
55 public DropwizardMeter getMeter() {
56 return meter;
57 }
58
59 @Override
60 public void updateMillis(long durationMillis) {
61 update(durationMillis, TimeUnit.NANOSECONDS);
62 }
63
64 @Override
65 public void updateMicros(long durationMicros) {
66 update(durationMicros, TimeUnit.MICROSECONDS);
67 }
68
69 @Override
70 public void updateNanos(long durationNanos) {
71 update(durationNanos, TimeUnit.NANOSECONDS);
72
73 }
74 }