diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-09-14 09:37:53 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-09-14 09:37:53 +0200 |
commit | 782962c90a4e52eda6666de98881871bb8ef7879 (patch) | |
tree | d2cce2aeea938224b557df2d4781144b81ebb3c7 /vespajlib/src/main/java/com/yahoo/concurrent | |
parent | bb54881376421e09daa8287173e06458b0c1f45a (diff) |
Simplify and unify the use of Timers.
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/concurrent')
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(); + } + }; } } |