예제 #1
0
        private static int GetThrottleCount(IRateLimitingCacheProvider rateLimiter,
                                            RateLimitPolicy policy,
                                            int totalNumberOfCalls,
                                            int sleepTimeInMilliSeconds)
        {
            int throttleCount = 0;

            for (var i = 1; i <= totalNumberOfCalls; i++)
            {
                if (rateLimiter.LimitRequestAsync(policy.RequestKey, policy.HttpMethod,
                                                  "TestRateLimiting.com", policy.RouteTemplate, policy.AllowedCallRates).Result.Throttled)
                {
                    throttleCount++;
                }

                Thread.Sleep(sleepTimeInMilliSeconds);
            }
            return(throttleCount);
        }
예제 #2
0
 public RateLimiter(IRateLimitingCacheProvider rateLimitingCacheProvider,
                    IRateLimitingPolicyProvider policyProvider)
 {
     _rateLimitingCacheProvider = rateLimitingCacheProvider ?? throw new ArgumentNullException(nameof(rateLimitingCacheProvider));
     _policyProvider            = policyProvider;
 }