class Faye::RackStream
Public Class Methods
new(socket_object)
click to toggle source
# File lib/faye/rack_stream.rb, line 18 def initialize(socket_object) @socket_object = socket_object @connection = socket_object.env['em.connection'] @stream_send = socket_object.env['stream.send'] if socket_object.env['rack.hijack'] socket_object.env['rack.hijack'].call @rack_hijack_io = socket_object.env['rack.hijack_io'] EventMachine.attach(@rack_hijack_io, Reader) do |reader| @rack_hijack_io_reader = reader reader.stream = self end end @connection.socket_stream = self if @connection.respond_to?(:socket_stream) end
Public Instance Methods
clean_rack_hijack()
click to toggle source
# File lib/faye/rack_stream.rb, line 35 def clean_rack_hijack return unless @rack_hijack_io @rack_hijack_io_reader.close_connection_after_writing @rack_hijack_io = @rack_hijack_io_reader = nil end
close_connection()
click to toggle source
# File lib/faye/rack_stream.rb, line 41 def close_connection clean_rack_hijack @connection.close_connection if @connection end
close_connection_after_writing()
click to toggle source
# File lib/faye/rack_stream.rb, line 46 def close_connection_after_writing clean_rack_hijack @connection.close_connection_after_writing if @connection end
each(&callback)
click to toggle source
# File lib/faye/rack_stream.rb, line 51 def each(&callback) @stream_send ||= callback end
fail()
click to toggle source
# File lib/faye/rack_stream.rb, line 55 def fail end
receive(data)
click to toggle source
# File lib/faye/rack_stream.rb, line 58 def receive(data) end
write(data)
click to toggle source
# File lib/faye/rack_stream.rb, line 61 def write(data) return @rack_hijack_io.write(data) if @rack_hijack_io return @stream_send.call(data) if @stream_send rescue => e fail if EOFError === e end