/** * Obtains an {@link Ensured} of the specified {@link Deferred}. * * @param deferred the {@link Deferred} to ensure * @param totalRetryDurationMS the maximum duration (in milliseconds) to retry * * @return an {@link Ensured} of the {@link Deferred} */ public static <T> Deferred<T> ensured(Deferred<T> deferred, long totalRetryDurationMS) { return deferred instanceof Ensured ? (Ensured<T>) deferred : new Ensured<T>(deferred, getDefaultEnsuredRetryDurationsMS(), totalRetryDurationMS); }
/** * Obtains an ensured of the specified {@link Deferred}. * * @param deferred the {@link Deferred} to ensure * @param totalRetryDuration the maximum duration for retrying * @param totalRetryDurationUnits the {@link TimeUnit}s for the duration * * @return an {@link Ensured} of the {@link Deferred} */ public static <T> Deferred<T> ensured(Deferred<T> deferred, long totalRetryDuration, TimeUnit totalRetryDurationUnits) { return deferred instanceof Ensured ? deferred : new Ensured<T>(deferred, getDefaultEnsuredRetryDurationsMS(), totalRetryDurationUnits .toMillis(totalRetryDuration)); }
/** * Obtains an ensured of the specified {@link Deferred}. * * @param deferred the {@link Deferred} to ensure * @param retryDelayDuration the time to wait between retrying * @param retryDelayDurationUnits the {@link TimeUnit}s for the retry delay duration * @param totalRetryDuration the maximum duration for retrying * @param totalRetryDurationUnits the {@link TimeUnit}s for the duration * * @return an {@link Ensured} of the {@link Deferred} */ public static <T> Deferred<T> ensured(Deferred<T> deferred, long retryDelayDuration, TimeUnit retryDelayDurationUnits, long totalRetryDuration, TimeUnit totalRetryDurationUnits) { Iterator<Long> retryDurationsMS = new PerpetualIterator<Long>(retryDelayDurationUnits.toMillis(retryDelayDuration < 0 ? 0 : retryDelayDuration)); return deferred instanceof Ensured ? deferred : new Ensured<T>(deferred, retryDurationsMS, totalRetryDurationUnits .toMillis(totalRetryDuration)); }
/** * Obtains an ensured of the specified {@link Deferred} * (configured using default {@link Ensured} timeouts) * * @param deferred the {@link Deferred} to ensure * * @return an {@link Ensured} of the {@link Deferred} */ public static <T> Deferred<T> ensured(Deferred<T> deferred) { return deferred instanceof Ensured ? deferred : new Ensured<T>(deferred, getDefaultEnsuredRetryDurationsMS(), getDefaultEnsuredTimeoutMS()); }