class Emque::Consuming::ErrorTracker

Attributes

expiration[RW]
limit[RW]
occurrences[RW]

Public Class Methods

new(limit: 5, expiration: 3600) click to toggle source
# File lib/emque/consuming/error_tracker.rb, line 8
def initialize(limit: 5, expiration: 3600)
  self.limit = limit
  self.expiration = expiration
  self.occurrences = {}
end

Public Instance Methods

count() click to toggle source
# File lib/emque/consuming/error_tracker.rb, line 22
def count
  recent_errors.keys.count
end
limit_reached?() click to toggle source
# File lib/emque/consuming/error_tracker.rb, line 18
def limit_reached?
  count >= limit
end
notice_error_for(context) click to toggle source
# File lib/emque/consuming/error_tracker.rb, line 14
def notice_error_for(context)
  occurrences[key_for(context)] = Time.now + expiration
end

Private Instance Methods

key_for(context) click to toggle source
# File lib/emque/consuming/error_tracker.rb, line 34
def key_for(context)
  Digest::SHA256.hexdigest(context.to_s)
end
recent_errors() click to toggle source
# File lib/emque/consuming/error_tracker.rb, line 28
def recent_errors
  occurrences.delete_if do |key, expiration_time|
    expiration_time < Time.now
  end
end