Class: DRb::TimerIdConv::TimerHolder2

Inherits:
Object
  • Object
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 # KeepIt
    return obj
  end
end

#include?(key) ⇒ Boolean

Returns:



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