aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/metric/Gauge.scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2017-06-06 14:15:15 +0200
committerIvan Topolnjak <ivantopo@gmail.com>2017-06-06 14:15:15 +0200
commitc52f8eaca0d1ccc4c992cba039e35e099b5b478b (patch)
treef9e78e2f929627e7547bef39fdf6cbcd544cb8d8 /kamon-core/src/main/scala/kamon/metric/Gauge.scala
parent1f5d9876dedb715ae1c31203ea4f15ebf031612c (diff)
downloadKamon-c52f8eaca0d1ccc4c992cba039e35e099b5b478b.tar.gz
Kamon-c52f8eaca0d1ccc4c992cba039e35e099b5b478b.tar.bz2
Kamon-c52f8eaca0d1ccc4c992cba039e35e099b5b478b.zip
make it compile for Scala 2.11 and 2.12
Diffstat (limited to 'kamon-core/src/main/scala/kamon/metric/Gauge.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/metric/Gauge.scala40
1 files changed, 40 insertions, 0 deletions
diff --git a/kamon-core/src/main/scala/kamon/metric/Gauge.scala b/kamon-core/src/main/scala/kamon/metric/Gauge.scala
new file mode 100644
index 00000000..11876e99
--- /dev/null
+++ b/kamon-core/src/main/scala/kamon/metric/Gauge.scala
@@ -0,0 +1,40 @@
+package kamon.metric
+
+import java.util.concurrent.atomic.AtomicLong
+
+import kamon.util.MeasurementUnit
+
+trait Gauge {
+ def measurementUnit: MeasurementUnit
+
+ def increment(): Unit
+ def increment(times: Long): Unit
+ def decrement(): Unit
+ def decrement(times: Long): Unit
+ def set(value: Long): Unit
+}
+
+
+class AtomicLongGauge(name: String, tags: Map[String, String], val measurementUnit: MeasurementUnit)
+ extends SnapshotableGauge {
+
+ private val currentValue = new AtomicLong(0L)
+
+ def increment(): Unit =
+ currentValue.incrementAndGet()
+
+ def increment(times: Long): Unit =
+ currentValue.addAndGet(times)
+
+ def decrement(): Unit =
+ currentValue.decrementAndGet()
+
+ def decrement(times: Long): Unit =
+ currentValue.addAndGet(-times)
+
+ def set(value: Long): Unit =
+ currentValue.set(value)
+
+ def snapshot(): MetricValue =
+ MetricValue(name, tags, measurementUnit, currentValue.get())
+}