RetryPolicy
using System;
using System.Collections.Generic;
using System.Linq;
namespace Polly.Retry
{
internal static class RetryPolicy
{
public static void Implementation(Action action, IEnumerable<ExceptionPredicate> shouldRetryPredicates, Func<IRetryPolicyState> policyStateFactory)
{
IRetryPolicyState retryPolicyState = policyStateFactory();
Exception ex;
while (true) {
try {
action();
return;
} catch (Exception ex2) {
ex = ex2;
if (!shouldRetryPredicates.Any((ExceptionPredicate predicate) => predicate(ex)))
throw;
if (!retryPolicyState.CanRetry(ex))
throw;
}
}
}
}
}