class Coppertone::RequestCountLimiter

A utility class that encapsulates counter and limit behavior. Primarily used to track and limit the number of DNS queries of various types.

Attributes

count[RW]
counter_description[RW]
limit[RW]

Public Class Methods

new(limit = nil, counter_description = nil) click to toggle source
# File lib/coppertone/request_count_limiter.rb, line 7
def initialize(limit = nil, counter_description = nil)
  self.limit = limit
  self.counter_description = counter_description
  self.count = 0
end

Public Instance Methods

check_if_limit_exceeded() click to toggle source
# File lib/coppertone/request_count_limiter.rb, line 19
def check_if_limit_exceeded
  return if limit.nil?
  raise Coppertone::LimitExceededError, exception_message if exceeded?
end
exceeded?() click to toggle source
# File lib/coppertone/request_count_limiter.rb, line 28
def exceeded?
  return false unless limited?

  count > limit
end
exception_message() click to toggle source
# File lib/coppertone/request_count_limiter.rb, line 24
def exception_message
  "Maximum #{counter_description} limit of #{limit} exceeded."
end
increment!(num = 1) click to toggle source
# File lib/coppertone/request_count_limiter.rb, line 13
def increment!(num = 1)
  self.count += num
  check_if_limit_exceeded
  count
end
limited?() click to toggle source
# File lib/coppertone/request_count_limiter.rb, line 34
def limited?
  !limit.nil?
end