Class: DRb::TimerIdConv::TimerHolder2
- Inherits:
-
Object
- Object
- DRb::TimerIdConv::TimerHolder2
show all
- Includes:
- MonitorMixin
- Defined in:
- lib/drb/timeridconv.rb
Defined Under Namespace
Classes: InvalidIndexError
Instance Method Summary
collapse
Constructor Details
#initialize(timeout = 600) ⇒ TimerHolder2
Returns a new instance of TimerHolder2.
11
12
13
14
15
16
17
18
19
|
# File 'lib/drb/timeridconv.rb', line 11
def initialize(timeout=600)
super()
@sentinel = Object.new
@gc = {}
@curr = {}
@renew = {}
@timeout = timeout
@keeper = keeper
end
|
Instance Method Details
#add(obj) ⇒ Object
21
22
23
24
25
26
27
|
# File 'lib/drb/timeridconv.rb', line 21
def add(obj)
synchronize do
key = obj.__id__
@curr[key] = obj
return key
end
end
|
#fetch(key, dv = @sentinel) ⇒ Object
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/drb/timeridconv.rb', line 29
def fetch(key, dv=@sentinel)
synchronize do
obj = peek(key)
if obj == @sentinel
return dv unless dv == @sentinel
raise InvalidIndexError
end
@renew[key] = obj return obj
end
end
|
#include?(key) ⇒ Boolean
41
42
43
44
45
46
47
|
# File 'lib/drb/timeridconv.rb', line 41
def include?(key)
synchronize do
obj = peek(key)
return false if obj == @sentinel
true
end
end
|
#peek(key) ⇒ Object
49
50
51
52
53
|
# File 'lib/drb/timeridconv.rb', line 49
def peek(key)
synchronize do
return @curr.fetch(key, @renew.fetch(key, @gc.fetch(key, @sentinel)))
end
end
|