class Vines::Stream::Http::Sessions

Sessions is a cache of Http::Session objects for transient HTTP connections. The cache is monitored for expired client connections.

Public Class Methods

[](sid) click to toggle source
# File lib/vines/stream/http/sessions.rb, line 16
def self.[](sid)
  instance[sid]
end
[]=(sid, session) click to toggle source
# File lib/vines/stream/http/sessions.rb, line 20
def self.[]=(sid, session)
  instance[sid] = session
end
delete(sid) click to toggle source
# File lib/vines/stream/http/sessions.rb, line 24
def self.delete(sid)
  instance.delete(sid)
end
instance() click to toggle source
# File lib/vines/stream/http/sessions.rb, line 12
def self.instance
  @@instance ||= self.new
end
new() click to toggle source
# File lib/vines/stream/http/sessions.rb, line 28
def initialize
  @sessions = {}
  start_timer
end

Public Instance Methods

[](sid) click to toggle source
# File lib/vines/stream/http/sessions.rb, line 37
def [](sid)
  @sessions[sid]
end
[]=(sid, session) click to toggle source
# File lib/vines/stream/http/sessions.rb, line 33
def []=(sid, session)
  @sessions[sid] = session
end
delete(sid) click to toggle source
# File lib/vines/stream/http/sessions.rb, line 41
def delete(sid)
  @sessions.delete(sid)
end

Private Instance Methods

cleanup() click to toggle source

Remove cached information for all expired connections. An expired HTTP client is one that has no queued requests and has had no activity for over 20 seconds.

# File lib/vines/stream/http/sessions.rb, line 55
def cleanup
  @sessions.each_value do |session|
    session.close if session.expired?
  end
rescue => e
  log.error("Expired session cleanup failed: #{e}")
end
start_timer() click to toggle source

Check for expired clients to cleanup every second.

# File lib/vines/stream/http/sessions.rb, line 48
def start_timer
  @timer ||= EventMachine::PeriodicTimer.new(1) { cleanup }
end