Class: Magick::Adapters::Memory
- Defined in:
- lib/magick/adapters/memory.rb
Instance Method Summary collapse
- #all_features ⇒ Object
- #clear ⇒ Object
- #delete(feature_name) ⇒ Object
- #exists?(feature_name) ⇒ Boolean
- #get(feature_name, key) ⇒ Object
-
#initialize ⇒ Memory
constructor
A new instance of Memory.
- #set(feature_name, key, value) ⇒ Object
- #set_ttl(feature_name, seconds) ⇒ Object
Constructor Details
#initialize ⇒ Memory
Returns a new instance of Memory.
6 7 8 9 10 11 |
# File 'lib/magick/adapters/memory.rb', line 6 def initialize @store = {} @mutex = Mutex.new @ttl = {} @default_ttl = 3600 # 1 hour default TTL end |
Instance Method Details
#all_features ⇒ Object
52 53 54 55 56 57 |
# File 'lib/magick/adapters/memory.rb', line 52 def all_features mutex.synchronize do cleanup_expired store.keys end end |
#clear ⇒ Object
59 60 61 62 63 64 |
# File 'lib/magick/adapters/memory.rb', line 59 def clear mutex.synchronize do @store = {} @ttl = {} end end |
#delete(feature_name) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/magick/adapters/memory.rb', line 37 def delete(feature_name) mutex.synchronize do feature_name_str = feature_name.to_s store.delete(feature_name_str) ttl.delete(feature_name_str) end end |
#exists?(feature_name) ⇒ Boolean
45 46 47 48 49 50 |
# File 'lib/magick/adapters/memory.rb', line 45 def exists?(feature_name) mutex.synchronize do cleanup_expired store.key?(feature_name.to_s) end end |
#get(feature_name, key) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/magick/adapters/memory.rb', line 13 def get(feature_name, key) # Fast path: avoid mutex if possible (use string keys directly) feature_name_str = feature_name.is_a?(String) ? feature_name : feature_name.to_s key_str = key.is_a?(String) ? key : key.to_s mutex.synchronize do cleanup_expired feature_data = store[feature_name_str] return nil unless feature_data value = feature_data[key_str] deserialize_value(value) end end |
#set(feature_name, key, value) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/magick/adapters/memory.rb', line 28 def set(feature_name, key, value) mutex.synchronize do feature_name_str = feature_name.to_s store[feature_name_str] ||= {} store[feature_name_str][key.to_s] = serialize_value(value) update_ttl(feature_name_str) end end |
#set_ttl(feature_name, seconds) ⇒ Object
66 67 68 69 70 |
# File 'lib/magick/adapters/memory.rb', line 66 def set_ttl(feature_name, seconds) mutex.synchronize do ttl[feature_name.to_s] = Time.now.to_i + seconds end end |