diff options
Diffstat (limited to 'lib/yahns/chunk_body.rb')
-rw-r--r-- | lib/yahns/chunk_body.rb | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/yahns/chunk_body.rb b/lib/yahns/chunk_body.rb new file mode 100644 index 0000000..6e56a18 --- /dev/null +++ b/lib/yahns/chunk_body.rb @@ -0,0 +1,27 @@ +# -*- encoding: binary -*- +# Copyright (C) 2016 all contributors <yahns-public@yhbt.net> +# License: GPL-3.0+ <https://www.gnu.org/licenses/gpl-3.0.txt> +# frozen_string_literal: true +class Yahns::ChunkBody + def initialize(body, vec) + @body = body + @vec = vec + end + + def each + vec = @vec + vec[2] = "\r\n".freeze + @body.each do |chunk| + vec[0] = "#{chunk.bytesize.to_s(16)}\r\n" + vec[1] = chunk + # vec[2] never changes: "\r\n" above + yield vec + end + vec.clear + yield "0\r\n\r\n".freeze + end + + def close + @body.close if @body.respond_to?(:close) + end +end |