Class: ProviderDSL::RateLimiter

Inherits:
Object
  • Object
show all
Defined in:
lib/provider_dsl/rate_limiter.rb

Overview

Simple rate limiter

Instance Method Summary collapse

Constructor Details

#initialize(maximum_calls, time_period) ⇒ RateLimiter

Returns a new instance of RateLimiter.



4
5
6
7
8
# File 'lib/provider_dsl/rate_limiter.rb', line 4

def initialize(maximum_calls, time_period)
  @maximum_calls = maximum_calls
  @time_period = time_period
  reset
end

Instance Method Details

#waitObject



10
11
12
13
14
15
16
17
# File 'lib/provider_dsl/rate_limiter.rb', line 10

def wait
  if @call_countdown.zero?
    delta = Time.now - @timestamp
    sleep(@time_period - delta) if delta < @time_period
    reset
  end
  @call_countdown -= 1
end