Class: Rack::Chunked::Body

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/chunked.rb

Overview

A body wrapper that emits chunked responses.

Direct Known Subclasses

TrailerBody

Constant Summary collapse

TERM =
"\r\n"
TAIL =
"0#{TERM}"

Instance Method Summary collapse

Constructor Details

#initialize(body) ⇒ Body

Store the response body to be chunked.


34
35
36
# File 'lib/rack/chunked.rb', line 34

def initialize(body)
  @body = body
end

Instance Method Details

#closeObject

Close the response body if the response body supports it.


54
55
56
# File 'lib/rack/chunked.rb', line 54

def close
  @body.close if @body.respond_to?(:close)
end

#each {|TAIL| ... } ⇒ Object

For each element yielded by the response body, yield the element in chunked encoding.

Yields:


40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/rack/chunked.rb', line 40

def each(&block)
  term = TERM
  @body.each do |chunk|
    size = chunk.bytesize
    next if size == 0

    yield [size.to_s(16), term, chunk.b, term].join
  end
  yield TAIL
  yield_trailers(&block)
  yield term
end