package com.nurkiewicz.asyncretry.backoff;
import com.nurkiewicz.asyncretry.RetryContext;
/**
* @author Tomasz Nurkiewicz
* @since 7/16/13, 7:04 PM
*/
public class BoundedMaxBackoff extends BackoffWrapper {
public static final long DEFAULT_MAX_DELAY_MILLIS = 10_000;
private final long maxDelayMillis;
public BoundedMaxBackoff(Backoff target) {
this(target, DEFAULT_MAX_DELAY_MILLIS);
}
public BoundedMaxBackoff(Backoff target, long maxDelayMillis) {
super(target);
this.maxDelayMillis = maxDelayMillis;
}
@Override
public long delayMillis(RetryContext context) {
return Math.min(target.delayMillis(context), maxDelayMillis);
}
}