Class: ZendeskAPI::LRUCache

Inherits:
Object
  • Object
show all
Defined in:
lib/zendesk_api/lru_cache.rb

Overview

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(size = 10) ⇒ LRUCache

Returns a new instance of LRUCache.



6
7
8
9
10
# File 'lib/zendesk_api/lru_cache.rb', line 6

def initialize(size = 10)
  @size = size
  @store = {}
  @lru = []
end

Instance Attribute Details

#sizeObject

Returns the value of attribute size.



4
5
6
# File 'lib/zendesk_api/lru_cache.rb', line 4

def size
  @size
end

Instance Method Details

#fetch(key) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/zendesk_api/lru_cache.rb', line 24

def fetch(key)
  if @store.has_key? key
    read key
  else
    write key, yield
  end
end

#read(key) ⇒ Object



19
20
21
22
# File 'lib/zendesk_api/lru_cache.rb', line 19

def read(key)
  set_lru(key)
  @store[key]
end

#write(key, value) ⇒ Object



12
13
14
15
16
17
# File 'lib/zendesk_api/lru_cache.rb', line 12

def write(key, value)
  @store[key] = value
  set_lru(key)
  @store.delete(@lru.pop) if @lru.size > @size
  value
end