Class | DRb::TimerIdConv::TimerHolder2 |
In: |
lib/drb/timeridconv.rb
|
Parent: | Object |
# File lib/drb/timeridconv.rb, line 11 11: def initialize(timeout=600) 12: super() 13: @sentinel = Object.new 14: @gc = {} 15: @curr = {} 16: @renew = {} 17: @timeout = timeout 18: @keeper = keeper 19: end
# File lib/drb/timeridconv.rb, line 21 21: def add(obj) 22: synchronize do 23: key = obj.__id__ 24: @curr[key] = obj 25: return key 26: end 27: end
# File lib/drb/timeridconv.rb, line 29 29: def fetch(key, dv=@sentinel) 30: synchronize do 31: obj = peek(key) 32: if obj == @sentinel 33: return dv unless dv == @sentinel 34: raise InvalidIndexError 35: end 36: @renew[key] = obj # KeepIt 37: return obj 38: end 39: end
# File lib/drb/timeridconv.rb, line 41 41: def include?(key) 42: synchronize do 43: obj = peek(key) 44: return false if obj == @sentinel 45: true 46: end 47: end
# File lib/drb/timeridconv.rb, line 49 49: def peek(key) 50: synchronize do 51: return @curr.fetch(key, @renew.fetch(key, @gc.fetch(key, @sentinel))) 52: end 53: end