Class DoubleBase2ExponentialHistogramBuckets

java.lang.Object
io.opentelemetry.sdk.metrics.internal.aggregator.DoubleBase2ExponentialHistogramBuckets
All Implemented Interfaces:
ExponentialHistogramBuckets

final class DoubleBase2ExponentialHistogramBuckets extends Object implements ExponentialHistogramBuckets
This class handles the operations for recording, scaling, and exposing data related to the base2 exponential histogram.

This class is internal and is hence not for public use. Its APIs are unstable and can change at any time.

  • Field Details

  • Constructor Details

    • DoubleBase2ExponentialHistogramBuckets

      DoubleBase2ExponentialHistogramBuckets(int scale, int maxBuckets, MemoryMode memoryMode)
    • DoubleBase2ExponentialHistogramBuckets

      DoubleBase2ExponentialHistogramBuckets(DoubleBase2ExponentialHistogramBuckets buckets)
  • Method Details

    • copy

      Returns a copy of this bucket.
    • clear

      void clear(int scale)
      Resets all counters in this bucket set to zero and resets the scale to scale.
    • record

      boolean record(double value)
    • getOffset

      public int getOffset()
      Description copied from interface: ExponentialHistogramBuckets
      The offset shifts the bucket boundaries according to lower_bound = base^(offset+i). .
      Specified by:
      getOffset in interface ExponentialHistogramBuckets
      Returns:
      the offset.
    • getBucketCounts

      public List<Long> getBucketCounts()
      Description copied from interface: ExponentialHistogramBuckets
      The bucket counts is a list of counts representing number of measurements that fall into each bucket.
      Specified by:
      getBucketCounts in interface ExponentialHistogramBuckets
      Returns:
      the bucket counts.
    • getBucketCountsIntoReusableList

      void getBucketCountsIntoReusableList(DynamicPrimitiveLongList reusableLongList)
      Fills the given reusable list with the bucket counts.

      NOTE: This is the same as getBucketCounts() but instead of returning a List with the values is fill the values into reusableLongList

      Parameters:
      reusableLongList - The list to fill with the bucket counts
    • getTotalCount

      public long getTotalCount()
      Description copied from interface: ExponentialHistogramBuckets
      The total count is the sum of all the values in the buckets.
      Specified by:
      getTotalCount in interface ExponentialHistogramBuckets
      Returns:
      the total count.
    • downscale

      void downscale(int by)
    • getScale

      public int getScale()
      Description copied from interface: ExponentialHistogramBuckets
      The scale of the buckets. Must align with ExponentialHistogramPointData.getScale().
      Specified by:
      getScale in interface ExponentialHistogramBuckets
    • getScaleReduction

      int getScaleReduction(double value)
      Returns the minimum scale reduction required to record the given value in these buckets, by calculating the new required window to allow the new value to be recorded. To be used with downScale().
      Parameters:
      value - The proposed value to be recorded.
      Returns:
      The required scale reduction in order to fit the value in these buckets.
    • getScaleReduction

      int getScaleReduction(long newStart, long newEnd)
    • equals

      public boolean equals(@Nullable Object obj)
      Overrides:
      equals in class Object
    • sameBucketCounts

      private boolean sameBucketCounts(DoubleBase2ExponentialHistogramBuckets other)
      Tests if two bucket counts are equivalent semantically.

      Semantic equivalence means:

      • All counts are stored between indexStart/indexEnd.
      • Offset does NOT need to be the same
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object