class Cache

Constants

ONE_DAY_IN_SECONDS

Attributes

cache[R]
times_queried[R]
timestamps[R]

Public Class Methods

cache_event(event, ip, filter) click to toggle source
# File lib/logstash/filters/ip2location.rb, line 149
def cache_event(event, ip, filter)
  filter.handleEvent(event)
  cache[ip] = event
  timestamps[ip] = Time.now
end
Also aliased as: refresh_event
cache_full?(cache_size) click to toggle source
# File lib/logstash/filters/ip2location.rb, line 145
def cache_full?(cache_size)
  cache.size >= cache_size
end
find(event, ip, filter, cache_size) click to toggle source
# File lib/logstash/filters/ip2location.rb, line 120
def find(event, ip, filter, cache_size)
  synchronize do
    if cache.has_key?(ip)
      refresh_event(event, ip, filter) if too_old?(ip)
    else
      if cache_full?(cache_size)
        make_room 
      end
      cache_event(event, ip, filter)
    end
    times_queried.increment(ip)
    cache[ip]
  end
end
make_room() click to toggle source
# File lib/logstash/filters/ip2location.rb, line 139
def make_room
  key = times_queried.delete_least_used
  cache.delete(key)
  timestamps.delete(key)
end
refresh_event(event, ip, filter)
Alias for: cache_event
synchronize(&block) click to toggle source
# File lib/logstash/filters/ip2location.rb, line 155
def synchronize(&block)
  @mutex.synchronize(&block)
end
too_old?(ip) click to toggle source
# File lib/logstash/filters/ip2location.rb, line 135
def too_old?(ip)
  timestamps[ip] < Time.now - ONE_DAY_IN_SECONDS
end