class Session
Public Class Methods
decode(chunk)
click to toggle source
# File web.rb, line 44 def self.decode(chunk) headersize = [1,1].pack("GN").size return chunk[headersize .. -1] end
new()
click to toggle source
# File web.rb, line 9 def initialize @queue = Queue.new @recent = [] @subscribers = [] @publisher_thread = Thread.new { run } end
Public Instance Methods
<<(chunk)
click to toggle source
# File web.rb, line 29 def <<(chunk) @recent << chunk @recent = @recent[0..100] @queue << chunk end
close()
click to toggle source
# File web.rb, line 49 def close @queue << ShutdownSignal end
run()
click to toggle source
# File web.rb, line 17 def run while true chunk = @queue.pop puts "#{@subscribers.count} subscribers" @subscribers.each do |subscriber| #p subscriber => chunk subscriber << chunk end break if chunk == ShutdownSignal end end
subscribe(output)
click to toggle source
# File web.rb, line 35 def subscribe(output) @recent.each { |c| output << c } @subscribers << output end
unsubscribe(output)
click to toggle source
# File web.rb, line 40 def unsubscribe(output) @subscribers.delete(output) end