aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/main/scala/kamon/util/Clock.scala
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-core/src/main/scala/kamon/util/Clock.scala')
-rw-r--r--kamon-core/src/main/scala/kamon/util/Clock.scala36
1 files changed, 25 insertions, 11 deletions
diff --git a/kamon-core/src/main/scala/kamon/util/Clock.scala b/kamon-core/src/main/scala/kamon/util/Clock.scala
index 8765ec69..4f4561b5 100644
--- a/kamon-core/src/main/scala/kamon/util/Clock.scala
+++ b/kamon-core/src/main/scala/kamon/util/Clock.scala
@@ -15,20 +15,34 @@
package kamon.util
+import java.time.{Instant, ZoneId, Clock => JavaClock}
+
+abstract class Clock extends JavaClock {
+ def micros(): Long
+ def relativeNanos(): Long
+}
+
object Clock {
- private val startTimeMillis = System.currentTimeMillis()
- private val startNanoTime = System.nanoTime()
- private val startMicroTime = startTimeMillis * 1000L
- def microTimestamp(): Long =
- startMicroTime + ((System.nanoTime() - startNanoTime) / 1000L)
+ class Default extends Clock {
+ private val systemClock = JavaClock.systemUTC()
+ private val startTimeMillis = System.currentTimeMillis()
+ private val startNanoTime = System.nanoTime()
+ private val startMicroTime = startTimeMillis * 1000L
+
+ override def micros(): Long =
+ startMicroTime + ((System.nanoTime() - startNanoTime) / 1000L)
+
+ override def relativeNanos(): Long =
+ System.nanoTime()
- def milliTimestamp(): Long =
- System.currentTimeMillis()
+ override def instant(): Instant =
+ systemClock.instant()
- def relativeNanoTimestamp(): Long =
- System.nanoTime()
+ override def withZone(zone: ZoneId): JavaClock =
+ systemClock.withZone(zone)
- def toMicroTimestamp(nanoTime: Long): Long =
- startMicroTime + (startNanoTime - nanoTime / 1000L)
+ override def getZone: ZoneId =
+ systemClock.getZone()
+ }
} \ No newline at end of file