class OnlineManager
Public Class Methods
new(config)
click to toggle source
# File lib/online_manager.rb, line 12 def initialize(config) @config = config @online_users = {} end
run(*args, &block)
click to toggle source
# File lib/online_manager.rb, line 4 def self.run(*args, &block) new(*args, &block).run end
setup(*args, &block)
click to toggle source
# File lib/online_manager.rb, line 8 def self.setup(*args, &block) new(*args, &block).setup end
Public Instance Methods
run()
click to toggle source
# File lib/online_manager.rb, line 17 def run EM.run { setup } end
setup()
click to toggle source
# File lib/online_manager.rb, line 21 def setup @config.setup(&method(:seen)) end
Private Instance Methods
online?(id)
click to toggle source
# File lib/online_manager.rb, line 45 def online?(id) @online_users.has_key?(id) end
seen(id)
click to toggle source
# File lib/online_manager.rb, line 27 def seen(id) @config.online(id) unless online?(id) time = Time.now @online_users[id] = time EM.add_timer(@config.timeout) do set_offline(id, time) end end
set_offline(id, time)
click to toggle source
# File lib/online_manager.rb, line 38 def set_offline(id, time) if @online_users[id] == time @online_users.delete(id) @config.offline(id) end end