Method: Datadog::Core::TokenBucket#initialize

Defined in:
lib/datadog/core/rate_limiter.rb

#initialize(rate, max_tokens = rate) ⇒ TokenBucket

Returns a new instance of TokenBucket.

Parameters:

  • rate (Numeric)

    Allowance rate, in units per second if rate is negative, always allow if rate is zero, never allow

  • max_tokens (Numeric) (defaults to: rate)

    Limit of available tokens

Raises:

  • (ArgumentError)


36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/datadog/core/rate_limiter.rb', line 36

def initialize(rate, max_tokens = rate)
  super()

  raise ArgumentError, "rate must be a number: #{rate}" unless rate.is_a?(Numeric)
  raise ArgumentError, "max_tokens must be a number: #{max_tokens}" unless max_tokens.is_a?(Numeric)

  @rate = rate
  @max_tokens = max_tokens

  @tokens = max_tokens
  @total_messages = 0
  @conforming_messages = 0
  @prev_conforming_messages = nil
  @prev_total_messages = nil
  @current_window = nil

  @last_refill = Core::Utils::Time.get_time
end