Class: Merb::MemorySessionStore
- Defined in:
- lib/merb-core/dispatch/session/memory.rb
Overview
Used for handling multiple sessions stored in memory.
Instance Method Summary collapse
-
#delete_session(session_id) ⇒ Object
Parameters session_id<String>:: ID of the session to delete.
-
#initialize(ttl = nil) ⇒ MemorySessionStore
constructor
Parameters ttl<Fixnum>:: Session validity time in seconds.
-
#reap_expired_sessions ⇒ Object
Deletes any sessions that have reached their maximum validity.
-
#retrieve_session(session_id) ⇒ Object
Parameters session_id<String>:: ID of the session to retrieve.
-
#start_timer ⇒ Object
Starts the timer that will eventually reap outdated sessions.
-
#store_session(session_id, data) ⇒ Object
Parameters session_id<String>:: ID of the session to set.
Constructor Details
#initialize(ttl = nil) ⇒ MemorySessionStore
Parameters
- ttl<Fixnum>
-
Session validity time in seconds. Defaults to 1 hour.
40 41 42 43 44 45 46 |
# File 'lib/merb-core/dispatch/session/memory.rb', line 40 def initialize(ttl=nil) @sessions = Hash.new @timestamps = Hash.new @mutex = Mutex.new @session_ttl = ttl || Merb::Const::HOUR # defaults 1 hour start_timer end |
Instance Method Details
#delete_session(session_id) ⇒ Object
Parameters
- session_id<String>
-
ID of the session to delete.
72 73 74 75 76 77 |
# File 'lib/merb-core/dispatch/session/memory.rb', line 72 def delete_session(session_id) @mutex.synchronize { @timestamps.delete(session_id) @sessions.delete(session_id) } end |
#reap_expired_sessions ⇒ Object
Deletes any sessions that have reached their maximum validity.
80 81 82 83 84 85 |
# File 'lib/merb-core/dispatch/session/memory.rb', line 80 def reap_expired_sessions @timestamps.each do |session_id,stamp| delete_session(session_id) if (stamp + @session_ttl) < Time.now end GC.start end |
#retrieve_session(session_id) ⇒ Object
Parameters
- session_id<String>
-
ID of the session to retrieve.
Returns
- ContainerSession
-
The session corresponding to the ID.
53 54 55 56 57 58 |
# File 'lib/merb-core/dispatch/session/memory.rb', line 53 def retrieve_session(session_id) @mutex.synchronize { @timestamps[session_id] = Time.now @sessions[session_id] } end |
#start_timer ⇒ Object
Starts the timer that will eventually reap outdated sessions.
88 89 90 91 92 93 94 95 |
# File 'lib/merb-core/dispatch/session/memory.rb', line 88 def start_timer Thread.new do loop { sleep @session_ttl reap_expired_sessions } end end |
#store_session(session_id, data) ⇒ Object
Parameters
- session_id<String>
-
ID of the session to set.
- data<ContainerSession>
-
The session to set.
63 64 65 66 67 68 |
# File 'lib/merb-core/dispatch/session/memory.rb', line 63 def store_session(session_id, data) @mutex.synchronize { @timestamps[session_id] = Time.now @sessions[session_id] = data } end |