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:

  • (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