| 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