1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| | # -*- encoding: binary -*-
# :enddoc:
#
class Rainbows::Epoll::ResponsePipe
attr_reader :io
alias to_io io
RBUF = Rainbows::EvCore::RBUF
EP = Rainbows::EP
def initialize(io, client, body)
@io, @client, @body = io, client, body
end
def epoll_run
return close if @client.closed?
@client.stream_pipe(self) or @client.on_deferred_write_complete
rescue => e
close
@client.handle_error(e)
end
def close
@io or return
EP.delete self
@body.respond_to?(:close) and @body.close
@io = @body = nil
end
def tryread
Kgio.tryread(@io, 16384, RBUF)
end
end
|