Class: Protocol::HTTP1::Body::Remainder
- Inherits:
-
HTTP::Body::Readable
- Object
- HTTP::Body::Readable
- Protocol::HTTP1::Body::Remainder
- Defined in:
- lib/protocol/http1/body/remainder.rb
Constant Summary collapse
- BLOCK_SIZE =
1024 * 64
Instance Method Summary collapse
- #call(stream) ⇒ Object
- #close(error = nil) ⇒ Object
- #empty? ⇒ Boolean
-
#initialize(stream) ⇒ Remainder
constructor
block_size may be removed in the future.
- #inspect ⇒ Object
- #join ⇒ Object
-
#read ⇒ Object
TODO this is a bit less efficient in order to maintain compatibility with ‘IO`.
Constructor Details
#initialize(stream) ⇒ Remainder
block_size may be removed in the future. It is better managed by stream.
15 16 17 |
# File 'lib/protocol/http1/body/remainder.rb', line 15 def initialize(stream) @stream = stream end |
Instance Method Details
#call(stream) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/protocol/http1/body/remainder.rb', line 38 def call(stream) self.each do |chunk| stream.write(chunk) end stream.flush end |
#close(error = nil) ⇒ Object
23 24 25 26 27 28 |
# File 'lib/protocol/http1/body/remainder.rb', line 23 def close(error = nil) # We can't really do anything in this case except close the connection. @stream.close super end |
#empty? ⇒ Boolean
19 20 21 |
# File 'lib/protocol/http1/body/remainder.rb', line 19 def empty? @stream.eof? or @stream.closed? end |
#inspect ⇒ Object
50 51 52 |
# File 'lib/protocol/http1/body/remainder.rb', line 50 def inspect "\#<#{self.class} #{@stream.closed? ? 'closed' : 'open'}>" end |
#join ⇒ Object
46 47 48 |
# File 'lib/protocol/http1/body/remainder.rb', line 46 def join @stream.read end |
#read ⇒ Object
TODO this is a bit less efficient in order to maintain compatibility with ‘IO`.
31 32 33 34 35 36 |
# File 'lib/protocol/http1/body/remainder.rb', line 31 def read @stream.readpartial(BLOCK_SIZE) rescue EOFError, IOError # I noticed that in some cases you will get EOFError, and in other cases IOError!? return nil end |