Class: Faye::RackStream
- Inherits:
-
Object
show all
- Includes:
- EventMachine::Deferrable
- Defined in:
- lib/faye/rack_stream.rb
Defined Under Namespace
Modules: Reader
Instance Method Summary
collapse
Constructor Details
#initialize(socket_object) ⇒ RackStream
Returns a new instance of RackStream.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# 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
|
Instance Method Details
#clean_rack_hijack ⇒ Object
35
36
37
38
39
|
# 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 ⇒ Object
41
42
43
44
|
# File 'lib/faye/rack_stream.rb', line 41
def close_connection
clean_rack_hijack
@connection.close_connection if @connection
end
|
#close_connection_after_writing ⇒ Object
46
47
48
49
|
# 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) ⇒ Object
51
52
53
|
# File 'lib/faye/rack_stream.rb', line 51
def each(&callback)
@stream_send ||= callback
end
|
#fail ⇒ Object
55
56
|
# File 'lib/faye/rack_stream.rb', line 55
def fail
end
|
#receive(data) ⇒ Object
58
59
|
# File 'lib/faye/rack_stream.rb', line 58
def receive(data)
end
|
#write(data) ⇒ Object
61
62
63
64
65
66
|
# 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
|