summaryrefslogtreecommitdiffstats
path: root/vespajlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-09-14 09:37:53 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2022-09-14 09:37:53 +0200
commit782962c90a4e52eda6666de98881871bb8ef7879 (patch)
treed2cce2aeea938224b557df2d4781144b81ebb3c7 /vespajlib
parentbb54881376421e09daa8287173e06458b0c1f45a (diff)
Simplify and unify the use of Timers.
Diffstat (limited to 'vespajlib')
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/ManualTimer.java18
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/MonotonicTimer.java15
-rw-r--r--vespajlib/src/main/java/com/yahoo/concurrent/Timer.java12
3 files changed, 30 insertions, 15 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/ManualTimer.java b/vespajlib/src/main/java/com/yahoo/concurrent/ManualTimer.java
new file mode 100644
index 00000000000..ffa6acd446a
--- /dev/null
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/ManualTimer.java
@@ -0,0 +1,18 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.concurrent;
+
+/**
+ * Simple manual Timer for use in tests
+ * @author baldersheim
+ */
+public class ManualTimer implements Timer {
+
+ private long millis = 0;
+ public void set(long ms) { millis = ms; }
+ public void advance(long ms) { millis += ms; }
+
+ @Override
+ public long milliTime() {
+ return millis;
+ }
+}
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/MonotonicTimer.java b/vespajlib/src/main/java/com/yahoo/concurrent/MonotonicTimer.java
deleted file mode 100644
index 03cad7b37a6..00000000000
--- a/vespajlib/src/main/java/com/yahoo/concurrent/MonotonicTimer.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.yahoo.concurrent;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * Implements the Timer interface by using System.nanoTime.
- *
- * @author baldersheim
- */
-public class MonotonicTimer implements Timer {
- @Override
- public long milliTime() {
- return TimeUnit.NANOSECONDS.toMillis(System.nanoTime());
- }
-}
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/Timer.java b/vespajlib/src/main/java/com/yahoo/concurrent/Timer.java
index 1793e860af8..282524c0d54 100644
--- a/vespajlib/src/main/java/com/yahoo/concurrent/Timer.java
+++ b/vespajlib/src/main/java/com/yahoo/concurrent/Timer.java
@@ -1,6 +1,9 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.concurrent;
+import java.time.Clock;
+import java.util.concurrent.TimeUnit;
+
/**
* This interface wraps access to some timer that can be used to measure elapsed time, in milliseconds. This
* abstraction allows for unit testing the behavior of time-based constructs.
@@ -16,5 +19,14 @@ public interface Timer {
* @return The current value of the timer, in milliseconds.
*/
long milliTime();
+ Timer monotonic = () -> TimeUnit.NANOSECONDS.toMillis(System.nanoTime());
+ static Timer wrap(Clock original) {
+ return new Timer() {
+ private final Clock clock = original;
+ @Override
+ public long milliTime() {
+ return clock.millis();
+ }
+ }; }
}