package com.nurkiewicz.asyncretry;
import com.nurkiewicz.asyncretry.function.RetryCallable;
import com.nurkiewicz.asyncretry.function.RetryRunnable;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletableFuture;
/**
* @author Tomasz Nurkiewicz
* @since 7/17/13, 7:25 PM
*/
public interface RetryExecutor {
CompletableFuture<Void> doWithRetry(RetryRunnable action);
<V> CompletableFuture<V> getWithRetry(Callable<V> task);
<V> CompletableFuture<V> getWithRetry(RetryCallable<V> task);
<V> CompletableFuture<V> getFutureWithRetry(RetryCallable<CompletableFuture<V>> task);
}