AsyncRateLimitPolicy
A rate-limit policy that can be applied to asynchronous delegates.
using System;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
namespace Polly.RateLimit
{
public class AsyncRateLimitPolicy : AsyncPolicy, IRateLimitPolicy, IsPolicy
{
private readonly IRateLimiter _rateLimiter;
internal AsyncRateLimitPolicy(IRateLimiter rateLimiter)
: base((PolicyBuilder)null)
{
if (rateLimiter == null)
throw new ArgumentNullException("rateLimiter");
_rateLimiter = rateLimiter;
}
[DebuggerStepThrough]
protected override Task<TResult> ImplementationAsync<TResult>(Func<Context, CancellationToken, Task<TResult>> action, Context context, CancellationToken cancellationToken, bool continueOnCapturedContext)
{
return AsyncRateLimitEngine.ImplementationAsync(_rateLimiter, null, action, context, cancellationToken, continueOnCapturedContext);
}
}
}