class Colossus::Engine::Memory::ClientSessionStore

Represents all the different sessions of a user. It can find

the global status of the user given all the different status.

Attributes

last_status[R]
sessions[RW]

Public Class Methods

new() click to toggle source
# File lib/colossus/engines/memory/client_session_store.rb, line 10
def initialize
  @sessions = Hash.new do |hash, key|
    hash[key] = Colossus::Engine::Memory::ClientSession.new
  end
  @last_status = DISCONNECTED
end

Public Instance Methods

[](session_id) click to toggle source
# File lib/colossus/engines/memory/client_session_store.rb, line 40
def [](session_id)
  sessions[session_id]
end
[]=(session_id, session_status) click to toggle source
# File lib/colossus/engines/memory/client_session_store.rb, line 44
def []=(session_id, session_status)
  @last_status = status
  sessions[session_id].status = session_status
end
delete(session_id) click to toggle source
# File lib/colossus/engines/memory/client_session_store.rb, line 49
def delete(session_id)
  sessions.delete(session_id)
end
last_seen() click to toggle source
# File lib/colossus/engines/memory/client_session_store.rb, line 30
def last_seen
  sessions.values.reduce(Time.new(0)) do |memo, session|
    session.last_seen > memo ? session.last_seen : memo
  end
end
status() click to toggle source
# File lib/colossus/engines/memory/client_session_store.rb, line 17
def status
  sessions.values.reduce(DISCONNECTED) do |memo, session|
    case session.status
    when ACTIVE
      session.status
    when AWAY
      memo == ACTIVE ? memo : session.status
    else
      memo
    end
  end
end
status_changed?() click to toggle source
# File lib/colossus/engines/memory/client_session_store.rb, line 36
def status_changed?
  last_status != status
end