class Tofu::SessionBar
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/tofu.rb, line 84 def initialize super() @pool = {} @keeper = keeper @interval = 60 end
Public Instance Methods
fetch(key)
click to toggle source
# File lib/tofu.rb, line 100 def fetch(key) return nil if key.nil? synchronize do session = @pool[key] return nil unless session if session.expired? @pool.delete(key) return nil end return session end end
store(session)
click to toggle source
# File lib/tofu.rb, line 91 def store(session) key = session.session_id synchronize do @pool[key] = session end @keeper.wakeup return key end
Private Instance Methods
keeper()
click to toggle source
# File lib/tofu.rb, line 114 def keeper Thread.new do loop do synchronize do @pool.delete_if do |k, v| v.nil? || v.expired? end end Thread.stop if @pool.size == 0 sleep @interval end end end