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