@Override public Iterator<Duration> iterator() { return new MappingIterator<Long, Duration>(new ExponentialIterator(0, 50), MILLISECONDS_TO_DURATION); } };
@Override public Iterator<Duration> iterator() { return new MappingIterator<Long, Duration>(new FibonacciIterator(), MILLISECONDS_TO_DURATION); } };
@Override public Iterator<Duration> iterator() { return new MappingIterator<Long, Duration>(new ExponentialIterator(0, 50), MILLISECONDS_TO_DURATION); } };
@Override public Iterator<Duration> iterator() { return new MappingIterator<Long, Duration>(new FibonacciIterator(), MILLISECONDS_TO_DURATION); } };
/** * Obtains a randomized version of this {@link RetryFrequency}, where by * values returned from the {@link #get()} {@link Iterable} will be * randomized values between 0 and the values provided by this * {@link RetryFrequency}. * * @return a new randomized {@link RetryFrequency} */ public RetryFrequency randomized() { return new RetryFrequency(() -> new MappingIterator<>(new RandomIterator(new MappingIterator<>(this.get() .iterator(), duration -> duration.to(TimeUnit .MILLISECONDS))), duration -> Duration.of(duration, TimeUnit.MILLISECONDS))); }
/** * Obtains a randomized version of this {@link RetryFrequency}, where by * values returned from the {@link #get()} {@link Iterable} will be * randomized values between 0 and the values provided by this * {@link RetryFrequency}. * * @return a new randomized {@link RetryFrequency} */ public RetryFrequency randomized() { return new RetryFrequency(() -> new MappingIterator<>(new RandomIterator(new MappingIterator<>(this.get() .iterator(), duration -> duration.to(TimeUnit .MILLISECONDS))), duration -> Duration.of(duration, TimeUnit.MILLISECONDS))); }
@Override public Iterator<Duration> iterator() { return new MappingIterator<Long, Duration>(new RandomIterator(new ExponentialIterator(0, 50)), MILLISECONDS_TO_DURATION); } };
return new RetryFrequency(() -> new MappingIterator<>(frequencies.iterator(), duration -> Duration.of(duration, TimeUnit.MILLISECONDS)));
return new RetryFrequency(() -> new MappingIterator<>(frequencies.iterator(), duration -> Duration.of(duration, TimeUnit.MILLISECONDS)));
@Override public Iterator<Duration> iterator() { return new MappingIterator<Long, Duration>(new RandomIterator(new ExponentialIterator(0, 50)), MILLISECONDS_TO_DURATION); } };
/** * Obtains a {@link RetryFrequency} based on the Fibonacci sequence. * * @return a {@link RetryFrequency} */ public static RetryFrequency fibonacci() { return new RetryFrequency(() -> new MappingIterator<>(new FibonacciIterator(), duration -> Duration.of(duration, TimeUnit.MILLISECONDS))); }
/** * Obtains a {@link RetryFrequency} based on the Fibonacci sequence. * * @return a {@link RetryFrequency} */ public static RetryFrequency fibonacci() { return new RetryFrequency(() -> new MappingIterator<>(new FibonacciIterator(), duration -> Duration.of(duration, TimeUnit.MILLISECONDS))); }
/** * Obtains a {@link RetryFrequency} based on an exponential sequence. * * @param initial the initial (starting) value * @param percentage the growth rate percentage (typically between 0.0 and 100.0) * * @return a {@link RetryFrequency} */ public static RetryFrequency exponential(double initial, double percentage) { return new RetryFrequency(() -> new MappingIterator<>(new ExponentialIterator(initial, percentage), duration -> Duration.of(duration, TimeUnit.MILLISECONDS))); } }
/** * Obtains a {@link RetryFrequency} based on an exponential sequence. * * @param initial the initial (starting) value * @param percentage the growth rate percentage (typically between 0.0 and 100.0) * * @return a {@link RetryFrequency} */ public static RetryFrequency exponential(double initial, double percentage) { return new RetryFrequency(() -> new MappingIterator<>(new ExponentialIterator(initial, percentage), duration -> Duration.of(duration, TimeUnit.MILLISECONDS))); } }