Class: Dcc::Server::Storage::Memory
- Inherits:
-
Object
- Object
- Dcc::Server::Storage::Memory
- Defined in:
- lib/dcc/server/storage/memory.rb
Overview
In-memory storage with SHA-256-keyed entries and TTL eviction. Not thread-safe without external synchronization — wrap in a Mutex for concurrent deployments.
Instance Attribute Summary collapse
-
#ttl_seconds ⇒ Object
readonly
Returns the value of attribute ttl_seconds.
Instance Method Summary collapse
- #clear ⇒ Object
- #delete(id) ⇒ Boolean
- #get(id) ⇒ Dcc::Server::Storage::Entry?
-
#initialize(ttl_seconds: 300) ⇒ Memory
constructor
A new instance of Memory.
- #put(xml) ⇒ Dcc::Server::Storage::Entry
- #size ⇒ Object
Constructor Details
#initialize(ttl_seconds: 300) ⇒ Memory
Returns a new instance of Memory.
14 15 16 17 |
# File 'lib/dcc/server/storage/memory.rb', line 14 def initialize(ttl_seconds: 300) @store = {} @ttl_seconds = ttl_seconds end |
Instance Attribute Details
#ttl_seconds ⇒ Object (readonly)
Returns the value of attribute ttl_seconds.
12 13 14 |
# File 'lib/dcc/server/storage/memory.rb', line 12 def ttl_seconds @ttl_seconds end |
Instance Method Details
#clear ⇒ Object
47 48 49 |
# File 'lib/dcc/server/storage/memory.rb', line 47 def clear @store.clear end |
#delete(id) ⇒ Boolean
43 44 45 |
# File 'lib/dcc/server/storage/memory.rb', line 43 def delete(id) !!@store.delete(id) end |
#get(id) ⇒ Dcc::Server::Storage::Entry?
30 31 32 33 34 35 36 37 38 39 |
# File 'lib/dcc/server/storage/memory.rb', line 30 def get(id) entry = @store[id] return nil unless entry if entry.expired? @store.delete(id) return nil end entry end |
#put(xml) ⇒ Dcc::Server::Storage::Entry
21 22 23 24 25 26 |
# File 'lib/dcc/server/storage/memory.rb', line 21 def put(xml) id = ::Digest::SHA256.hexdigest(xml) entry = Entry.new(id: id, xml: xml, expires_at: Time.now + ttl_seconds) @store[id] = entry entry end |
#size ⇒ Object
51 52 53 |
# File 'lib/dcc/server/storage/memory.rb', line 51 def size @store.size end |