summaryrefslogtreecommitdiffstats
path: root/jdisc_core/src/main/java/com/yahoo/jdisc/TimeBudget.java
diff options
context:
space:
mode:
Diffstat (limited to 'jdisc_core/src/main/java/com/yahoo/jdisc/TimeBudget.java')
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/TimeBudget.java55
1 files changed, 0 insertions, 55 deletions
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/TimeBudget.java b/jdisc_core/src/main/java/com/yahoo/jdisc/TimeBudget.java
deleted file mode 100644
index 39322b6e83a..00000000000
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/TimeBudget.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.jdisc;
-
-import javax.annotation.concurrent.Immutable;
-import java.time.Duration;
-import java.time.Instant;
-
-/**
- * A TimeBudget tracks the current time compared to a start time and deadline.
- *
- * @author hakon
- */
-@Immutable
-public class TimeBudget {
- private final Timer timer;
- private final Instant start;
- private final Duration timeout;
-
- /** Returns a TimeBudget with a start time of now, and with the given timeout. */
- public static TimeBudget fromNow(Timer timer, Duration timeout) {
- return new TimeBudget(timer, timer.currentTime(), timeout);
- }
-
- private TimeBudget(Timer timer, Instant start, Duration timeout) {
- this.timer = timer;
- this.start = start;
- this.timeout = timeout;
- }
-
- /** Time until 'headroom' before deadline. Guaranteed to be non-negative. */
- public Duration timeBeforeDeadline(Duration headroom) {
- return nonNegativeBetween(now(), deadline().minus(headroom));
- }
-
- /** Returns the original timeout. */
- public Duration originalTimeout() {
- return timeout;
- }
-
- private static Duration nonNegativeBetween(Instant start, Instant end) {
- return makeNonNegative(Duration.between(start, end));
- }
-
- private static Duration makeNonNegative(Duration duration) {
- return duration.isNegative() ? Duration.ZERO : duration;
- }
-
- private Instant now() {
- return timer.currentTime();
- }
-
- private Instant deadline() {
- return start.plus(timeout);
- }
-}