Class: DTAS::Mcache
- Inherits:
-
Object
- Object
- DTAS::Mcache
- Defined in:
- lib/dtas/mcache.rb
Instance Method Summary collapse
-
#initialize(shift = 8, ttl = 60) ⇒ Mcache
constructor
A new instance of Mcache.
- #lookup(infile) ⇒ Object
Constructor Details
#initialize(shift = 8, ttl = 60) ⇒ Mcache
Returns a new instance of Mcache.
8 9 10 11 12 |
# File 'lib/dtas/mcache.rb', line 8 def initialize(shift = 8, ttl = 60) @mask = (1 << shift) - 1 @ttl = ttl @tbl = [] end |
Instance Method Details
#lookup(infile) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/dtas/mcache.rb', line 14 def lookup(infile) bucket = infile.hash & @mask if cur = @tbl[bucket] if cur[:infile] == infile && (DTAS.now - cur[:btime]) < @ttl return cur end end return unless block_given? @tbl[bucket] = begin cur = cur ? cur.clear : {} if ret = yield(infile, cur) ret[:infile] = infile.frozen? ? infile : infile.dup.freeze ret[:btime] = DTAS.now end ret end end |