aboutsummaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/time/TimeBudget.java
diff options
context:
space:
mode:
authorHarald Musum <musum@oath.com>2018-06-21 20:37:42 +0200
committerGitHub <noreply@github.com>2018-06-21 20:37:42 +0200
commit12aa9c3f161790b665259910a7c8f41706ba6682 (patch)
treebfaccaef6f0f4cf8052f573656bb57a844eb6cb9 /vespajlib/src/main/java/com/yahoo/time/TimeBudget.java
parent18b49613b7f2a62281b3275563d8e0b8b284b201 (diff)
Revert "Move TimeBudget to vespajlib and use Clock"
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/time/TimeBudget.java')
-rw-r--r--vespajlib/src/main/java/com/yahoo/time/TimeBudget.java65
1 files changed, 0 insertions, 65 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/time/TimeBudget.java b/vespajlib/src/main/java/com/yahoo/time/TimeBudget.java
deleted file mode 100644
index fa18cb5e467..00000000000
--- a/vespajlib/src/main/java/com/yahoo/time/TimeBudget.java
+++ /dev/null
@@ -1,65 +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.time;
-
-import com.google.common.util.concurrent.UncheckedTimeoutException;
-
-import java.time.Clock;
-import java.time.Duration;
-import java.time.Instant;
-
-/**
- * A TimeBudget can be used to track the time of an ongoing operation with a timeout.
- *
- * @author hakon
- */
-public class TimeBudget {
- private final Clock clock;
- 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(Clock clock, Duration timeout) {
- return new TimeBudget(clock, clock.instant(), timeout);
- }
-
- private TimeBudget(Clock clock, Instant start, Duration timeout) {
- this.clock = clock;
- this.start = start;
- this.timeout = makeNonNegative(timeout);
- }
-
- /** Returns time since start. */
- public Duration timePassed() {
- return nonNegativeBetween(start, clock.instant());
- }
-
- /** Returns the original timeout. */
- public Duration originalTimeout() {
- return timeout;
- }
-
- /**
- * Returns the time until deadline.
- *
- * @return time until deadline. It's toMillis() is guaranteed to be positive.
- * @throws UncheckedTimeoutException if the deadline has been reached or passed.
- */
- public Duration timeLeftOrThrow() {
- Instant now = clock.instant();
- Duration left = Duration.between(now, start.plus(timeout));
- if (left.toMillis() <= 0) {
- throw new UncheckedTimeoutException("Time since start " + nonNegativeBetween(start, now) +
- " exceeds timeout " + timeout);
- }
-
- return left;
- }
-
- 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;
- }
-}