Skip to content

Commit 616e69a

Browse files
committed
Adding factoy methods to create DelayPolicy
1 parent 100d0aa commit 616e69a

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

src/main/java/net/tascalate/concurrent/DelayPolicy.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,34 @@
2424

2525
import net.tascalate.concurrent.delays.BoundedMaxDelayPolicy;
2626
import net.tascalate.concurrent.delays.BoundedMinDelayPolicy;
27+
import net.tascalate.concurrent.delays.ExponentialDelayPolicy;
2728
import net.tascalate.concurrent.delays.FirstRetryNoDelayPolicy;
2829
import net.tascalate.concurrent.delays.FixedIntervalDelayPolicy;
2930
import net.tascalate.concurrent.delays.ProportionalRandomDelayPolicy;
3031
import net.tascalate.concurrent.delays.UniformRandomDelayPolicy;
3132

3233
public interface DelayPolicy {
3334
public static final DelayPolicy DEFAULT = new FirstRetryNoDelayPolicy(new FixedIntervalDelayPolicy());
34-
public static final DelayPolicy INVALID_DELAY = ctx -> -1;
35+
public static final DelayPolicy INVALID = ctx -> -1;
3536

3637
abstract public long delayMillis(RetryContext context);
3738

39+
public static DelayPolicy fixedInterval() {
40+
return new FixedIntervalDelayPolicy();
41+
}
42+
43+
public static DelayPolicy fixedInterval(long intervalMillis) {
44+
return new FixedIntervalDelayPolicy(intervalMillis);
45+
}
46+
47+
public static DelayPolicy exponential(double multiplier) {
48+
return new ExponentialDelayPolicy(multiplier);
49+
}
50+
51+
public static DelayPolicy exponential(long initialDelayMillis, double multiplier) {
52+
return new ExponentialDelayPolicy(initialDelayMillis, multiplier);
53+
}
54+
3855
default DelayPolicy withUniformJitter() {
3956
return new UniformRandomDelayPolicy(this);
4057
}

src/main/java/net/tascalate/concurrent/RetryPolicy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public RetryPolicy(int maxRetries, long defaultDelay) {
156156
Collections.emptySet(), Collections.emptySet(),
157157
ctx -> true, ctx -> false,
158158
DelayPolicy.DEFAULT,
159-
DelayPolicy.INVALID_DELAY
159+
DelayPolicy.INVALID
160160
);
161161
}
162162

src/main/java/net/tascalate/concurrent/delays/ExponentialDelayPolicy.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ public class ExponentialDelayPolicy implements DelayPolicy {
2929
private final long initialDelayMillis;
3030
private final double multiplier;
3131

32+
public ExponentialDelayPolicy(double multiplier) {
33+
this(FixedIntervalDelayPolicy.DEFAULT_PERIOD_MILLIS, multiplier);
34+
}
35+
3236
public ExponentialDelayPolicy(long initialDelayMillis, double multiplier) {
3337
if (initialDelayMillis <= 0) {
3438
throw new IllegalArgumentException("Initial delay must be positive but was: " + initialDelayMillis);

0 commit comments

Comments
 (0)