AWSAppender.Core.Services.EventRateLimiter.Request C# (CSharp) Метод

Request() публичный Метод

public Request ( System.DateTime timeStamp ) : bool
timeStamp System.DateTime
Результат bool
        public bool Request(DateTime timeStamp)
        {
            lock(_lockObject)
            {
                if (_maxEventsPerSecond == 0)
                    return true;

                var timePassed = timeStamp - _timeBefore;
                _timeBefore = timeStamp;

                _tokens += 1.0 * _maxEventsPerSecond * timePassed.Ticks / TimeSpan.FromSeconds(1).Ticks;

                if (_tokens > _maxEventsPerSecond)
                    _tokens = _maxEventsPerSecond;

                if (_tokens >= 1)
                {
                    _tokens--;
                    return true;
                }

                return false;

            }
        }

Usage Example

        public void DefaultAlwaysAccepts()
        {
            var e = new EventRateLimiter();

            var t = DateTime.Parse("2012-09-21 14:00");
            AddSomeRequests(t, e);

            Assert.IsTrue(e.Request(t.AddMilliseconds(900)));
        }
All Usage Examples Of AWSAppender.Core.Services.EventRateLimiter::Request