public RateGate(RateLimit rateLimit, IHaloSharpTimer timer) { _timeUnitMilliseconds = (int)rateLimit.TimeSpan.TotalMilliseconds; _timeoutMilliseconds = (int)rateLimit.Timeout.TotalMilliseconds; _semaphore = new SemaphoreSlim(rateLimit.RequestCount, rateLimit.RequestCount); _exitTimes = new ConcurrentQueue <int>(); timer.Setup(ExitTimerCallback, _timeUnitMilliseconds, Timeout.Infinite); _exitTimer = timer; //new HaloSharpTimer(ExitTimerCallback, null, _timeUnitMilliseconds, Timeout.Infinite); }
public HaloSession(IProduct product, IHaloSharpTimer timer, ICacheSettings cacheSettings = null, IObjectCache cache = null) { Cache.MetadataCacheDuration = cacheSettings?.MetadataCacheDuration; Cache.ProfileCacheDuration = cacheSettings?.ProfileCacheDuration; Cache.StatsCacheDuration = cacheSettings?.StatsCacheDuration; Cache.ObjectCache = cache; if (product.RateLimit != null) { _rateGate = new RateGate(product.RateLimit, timer); } var handler = new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }; _httpClient = new HttpClient(handler); _httpClient.DefaultRequestHeaders.Add(HeaderName, product.SubscriptionKey); }