RateLimitPolicy<TResult>
public class RateLimitPolicy<TResult> : Policy<TResult>, IRateLimitPolicy<TResult>, IRateLimitPolicy, IsPolicy
A rate-limit policy that can be applied to synchronous delegates returning a value of type TResult.
using System;
using System.Diagnostics;
using System.Threading;
namespace Polly.RateLimit
{
public class RateLimitPolicy<TResult> : Policy<TResult>, IRateLimitPolicy<TResult>, IRateLimitPolicy, IsPolicy
{
private readonly IRateLimiter _rateLimiter;
private readonly Func<TimeSpan, Context, TResult> _retryAfterFactory;
internal RateLimitPolicy(IRateLimiter rateLimiter, Func<TimeSpan, Context, TResult> retryAfterFactory)
: base((PolicyBuilder<TResult>)null)
{
if (rateLimiter == null)
throw new ArgumentNullException("rateLimiter");
_rateLimiter = rateLimiter;
_retryAfterFactory = retryAfterFactory;
}
[DebuggerStepThrough]
protected override TResult Implementation(Func<Context, CancellationToken, TResult> action, Context context, CancellationToken cancellationToken)
{
return RateLimitEngine.Implementation<TResult>(_rateLimiter, _retryAfterFactory, action, context, cancellationToken);
}
}
}