class BrickFTP::Utils::ChunkIO
Attributes
chunk_size[R]
io[R]
Public Class Methods
new(io, chunk_size: nil)
click to toggle source
Wrap IO object.
@param [IO, StringIO] io an IO object. @param [Integer] chunk_size
Size of chunk.
This option is ignored if `io` is `StringIO`.
# File lib/brick_ftp/utils/chunk_io.rb, line 18 def initialize(io, chunk_size: nil) @io = io @chunk_size = chunk_size end
Public Instance Methods
each(&block)
click to toggle source
Iterate with chunked IO object.
@yield [chunk] Give a chunk IO object to block. @yieldparam [StringIO] chunk a chunked IO object.
# File lib/brick_ftp/utils/chunk_io.rb, line 28 def each(&block) return enum_for(__method__) unless block if chunk_size && io.is_a?(IO) each_chunk(&block) else whole(&block) end end
Private Instance Methods
each_chunk() { |chunk| ... }
click to toggle source
# File lib/brick_ftp/utils/chunk_io.rb, line 44 def each_chunk eof = false offset = 0 until eof Tempfile.create('chunk-io') do |chunk| copied = IO.copy_stream(io, chunk, chunk_size, offset) eof = copied.zero? next if eof offset += copied chunk.rewind yield chunk end end end
whole() { |io| ... }
click to toggle source
# File lib/brick_ftp/utils/chunk_io.rb, line 40 def whole yield io end