class SessionStore

Use SessionStore.instance to access the singleton.

Public Class Methods

new() click to toggle source
# File lib/quartz_flow/session.rb, line 25
def initialize
  @sessions = {}  
  @session_mutex = Mutex.new
  @audit_thread = Thread.new do
    while true
      begin
        sleep 10
        audit_sessions  
      rescue
      end
    end
  end
end

Public Instance Methods

audit_sessions() click to toggle source
# File lib/quartz_flow/session.rb, line 74
def audit_sessions
  @sessions.each do |k,session|
    if session.expired?
      @session_mutex.synchronize do
        @sessions.delete k
      end
    end
  end
end
end_session(sid) click to toggle source
# File lib/quartz_flow/session.rb, line 51
def end_session(sid)
  return if ! sid
  @session_mutex.synchronize do
    @sessions.delete sid
  end
end
start_session(login) click to toggle source

Start a new session for the specified user.

# File lib/quartz_flow/session.rb, line 40
def start_session(login)
  sid = nil
  while ! sid || @sessions.has_key?(sid)
    sid = RandString.make_random_string(256)
  end
  @session_mutex.synchronize do 
    @sessions[sid] = Session.new(sid, login)
  end
  sid
end
valid_session?(sid) click to toggle source
# File lib/quartz_flow/session.rb, line 58
def valid_session?(sid)
  rc = false
  return rc if ! sid
  @session_mutex.synchronize do
    session = @sessions[sid]
    if session != nil 
      if !session.expired?
        rc = true
      else
        @sessions.delete sid
      end
    end
  end
  rc
end