View Javadoc

1   package com.atlassian.vcache.internal.core.metrics;
2   
3   import com.atlassian.vcache.internal.LongMetric;
4   
5   /**
6    * Implementation of the {@link LongMetric} interface that is <b>NOT</b> multi-thread safe.
7    *
8    * @since 1.0.0
9    */
10  public class DefaultLongMetric implements LongMetric {
11      private long sampleCount;
12      private long samplesTotal;
13      private long minSample = Long.MAX_VALUE;
14      private long maxSample = Long.MIN_VALUE;
15  
16      /**
17       * Records a sample.
18       *
19       * @param sample the sample to be recorded
20       */
21      public void record(long sample) {
22          sampleCount++;
23          samplesTotal += sample;
24          minSample = Math.min(sample, minSample);
25          maxSample = Math.max(sample, maxSample);
26      }
27  
28      @Override
29      public long getSampleCount() {
30          return sampleCount;
31      }
32  
33      @Override
34      public long getSamplesTotal() {
35          return samplesTotal;
36      }
37  
38      @Override
39      public long getMinSample() {
40          return minSample;
41      }
42  
43      @Override
44      public long getMaxSample() {
45          return maxSample;
46      }
47  
48      @Override
49      public String toString() {
50          return "DefaultLongMetric{" +
51                  "sampleCount=" + sampleCount +
52                  ", samplesTotal=" + samplesTotal +
53                  ", minSample=" + minSample +
54                  ", maxSample=" + maxSample +
55                  '}';
56      }
57  }