class OrderedHash
Constants
- ONE
Attributes
hash[R]
times_queried[R]
Public Class Methods
new()
click to toggle source
# File lib/logstash/filters/ip2proxy.rb, line 64 def initialize @times_queried = Hash.new(0) # ip -> times queried @hash = {} # number of hits -> array of ips end
Public Instance Methods
add(key)
click to toggle source
# File lib/logstash/filters/ip2proxy.rb, line 69 def add(key) hash[ONE] ||= [] hash[ONE] << key times_queried[key] = ONE end
delete_least_used()
click to toggle source
# File lib/logstash/filters/ip2proxy.rb, line 91 def delete_least_used first_pile_with_something.shift.tap { |key| times_queried.delete(key) } end
first_pile_with_something()
click to toggle source
# File lib/logstash/filters/ip2proxy.rb, line 95 def first_pile_with_something hash[hash.keys.min] end
increment(key)
click to toggle source
# File lib/logstash/filters/ip2proxy.rb, line 85 def increment(key) add(key) unless times_queried.has_key?(key) reorder(key) times_queried[key] += 1 end
reorder(key)
click to toggle source
# File lib/logstash/filters/ip2proxy.rb, line 75 def reorder(key) number_of_queries = times_queried[key] hash[number_of_queries].delete(key) hash.delete(number_of_queries) if hash[number_of_queries].empty? hash[number_of_queries + 1] ||= [] hash[number_of_queries + 1] << key end