Parent

Included Modules

Innate::LRUHash

A Hash-alike LRU cache that provides fine-grained control over content restrictions.

It allows you to set:

Differences to the original implementation include:

Copyright (C) 2002 Yoshinori K. Okuji <okuji@enbug.org> Copyright © 2009 Michael Fellinger <manveru@rubyists.com>

You may redistribute it and/or modify it under the same terms as Ruby.

Constants

CacheObject
KeyError

On 1.8 we raise IndexError, on 1.9 we raise KeyError

Public Class Methods

new(options = {}, &hook) click to toggle source
# File lib/innate/lru_hash.rb, line 26
def initialize(options = {}, &hook)
  self.max_count = options[:max_count]
  self.expiration = options[:expiration]
  self.hook = hook
  self.objs = {}
  self.list = []
end

Public Instance Methods

[](key) click to toggle source
# File lib/innate/lru_hash.rb, line 63
def [](key)
  expire

  return unless objs.key?(key)

  obj = objs[key]
  obj.atime = Time.now.to_i

  list.delete_if{|list_key| key == list_key }
  list << key

  obj.content
end
[]=(key, obj) click to toggle source
# File lib/innate/lru_hash.rb, line 77
def []=(key, obj)
  expire

  delete key if objs.key?(key)

  delete list.first if max_count && max_count == list.size

  objs[key] = CacheObject.new(obj, size, Time.now.to_i)
  list << key

  obj
end
clear() click to toggle source
# File lib/innate/lru_hash.rb, line 46
def clear
  objs.each{|key, obj| hook.call(key, obj) } if hook
  objs.clear
  list.clear
end
Also aliased as: invalidate_all
delete(key) click to toggle source
# File lib/innate/lru_hash.rb, line 34
def delete(key)
  return unless objs.key?(key)
  obj = objs[key]

  hook.call(key, obj.content) if hook
  objs.delete key

  list.delete_if{|list_key| key == list_key }

  obj.content
end
expire() click to toggle source
# File lib/innate/lru_hash.rb, line 53
def expire
  return unless expiration
  now = Time.now.to_i

  list.each_with_index do |key, index|
    break unless (objs[key].atime + expiration) <= now
    delete key
  end
end
invalidate_all() click to toggle source
Alias for: clear

[Validate]

Generated with the Darkfish Rdoc Generator 2.