72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'actioncable/lib/action_cable/connection/stream.rb', line 72
def flush_write_buffer
@write_lock.synchronize do
loop do
if @write_head.nil?
return true if @write_buffer.empty?
@write_head = @write_buffer.pop
end
written = @rack_hijack_io.write_nonblock(@write_head, exception: false)
case written
when :wait_writable
return false
when @write_head.bytesize
@write_head = nil
else
@write_head = @write_head.byteslice(written, @write_head.bytesize)
return false
end
end
end
end
|