Namespace
Methods
A
F
I
K
N
P
Included Modules
Class Public methods
new(timeout=600)
# File ../ruby/lib/drb/timeridconv.rb, line 11
def initialize(timeout=600)
  super()
  @sentinel = Object.new
  @gc = {}
  @curr = {}
  @renew = {}
  @timeout = timeout
  @keeper = keeper
end
Instance Public methods
add(obj)
# File ../ruby/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)
# File ../ruby/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)
# File ../ruby/lib/drb/timeridconv.rb, line 41
def include?(key)
  synchronize do
    obj = peek(key)
    return false if obj == @sentinel
    true
  end
end
peek(key)
# File ../ruby/lib/drb/timeridconv.rb, line 49
def peek(key)
  synchronize do
    return @curr.fetch(key, @renew.fetch(key, @gc.fetch(key, @sentinel)))
  end
end
Instance Private methods
alternate()
# File ../ruby/lib/drb/timeridconv.rb, line 56
def alternate
  synchronize do
    @gc = @curr       # GCed
    @curr = @renew
    @renew = {}
  end
end
keeper()
# File ../ruby/lib/drb/timeridconv.rb, line 64
def keeper
  Thread.new do
    loop do
      alternate
      sleep(@timeout)
    end
  end
end