1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.spf4j.failsafe;
17
18 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
19 import java.util.function.Supplier;
20
21
22
23
24 @FunctionalInterface
25 public interface TimedSupplier<T> {
26
27 T get(long startTimeNanos, long deadlineNanos);
28
29 static <T> TimedSupplier<T> constant(T value) {
30 return new TimedSupplier<T>() {
31 @Override
32 public T get(final long startTimeNanos, final long deadlineNanos) {
33 return value;
34 }
35
36 @Override
37 public String toString() {
38 return "ConstTimedSupplier{" + value + '}';
39 }
40 };
41 }
42
43 @SuppressFBWarnings("FII_USE_METHOD_REFERENCE")
44 static <T> TimedSupplier<T> fromSupplier(Supplier<T> supplier) {
45 return (s, e) -> supplier.get();
46 }
47
48
49 }