From bbd52dcca66caa3cbd78478a1d075ff54da4f65a Mon Sep 17 00:00:00 2001 From: Ivan Topolnjak Date: Mon, 24 Apr 2017 14:10:46 +0200 Subject: bring the new skeleton into place --- .../kamon/metric/instrument/DynamicRange.scala | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 kamon-core/src/main/scala/kamon/metric/instrument/DynamicRange.scala (limited to 'kamon-core/src/main/scala/kamon/metric/instrument/DynamicRange.scala') diff --git a/kamon-core/src/main/scala/kamon/metric/instrument/DynamicRange.scala b/kamon-core/src/main/scala/kamon/metric/instrument/DynamicRange.scala new file mode 100644 index 00000000..628439c2 --- /dev/null +++ b/kamon-core/src/main/scala/kamon/metric/instrument/DynamicRange.scala @@ -0,0 +1,33 @@ +package kamon.metric.instrument + +import java.util.concurrent.TimeUnit + +case class DynamicRange(lowestDiscernibleValue: Long, highestTrackableValue: Long, significantValueDigits: Int) { + def upTo(highestTrackableValue: Long): DynamicRange = + copy(highestTrackableValue = highestTrackableValue) + + def startingFrom(lowestDiscernibleValue: Long): DynamicRange = + copy(lowestDiscernibleValue = lowestDiscernibleValue) +} + +object DynamicRange { + private val oneHourInNanoseconds = TimeUnit.HOURS.toNanos(1) + + /** + * Provides a range from 0 to 3.6e+12 (one hour in nanoseconds) with a value precision of 1 significant digit (10%) + * across that range. + */ + val Loose = DynamicRange(0L, oneHourInNanoseconds, 1) + + /** + * Provides a range from 0 to 3.6e+12 (one hour in nanoseconds) with a value precision of 2 significant digit (1%) + * across that range. + */ + val Default = DynamicRange(0L, oneHourInNanoseconds, 2) + + /** + * Provides a range from 0 to 3.6e+12 (one hour in nanoseconds) with a value precision of 3 significant digit (0.1%) + * across that range. + */ + val Fine = DynamicRange(0L, oneHourInNanoseconds, 3) +} -- cgit v1.2.3