Parent

Methods

Files

Class/Module Index [+]

Quicksearch

Chef::StreamingCookbookUploader::MultipartStream

Public Class Methods

new(parts) click to toggle source
# File lib/chef/streaming_cookbook_uploader.rb, line 159
def initialize(parts)
  Chef::Log.warn('[DEPRECATED] StreamingCookbookUploader::MultipartStream class is deprecated. It will be removed in Chef 12. Please use CookbookSiteStreamingUploader::MultipartStream instead.')
  @parts = parts
  @part_no = 0
  @part_offset = 0
end

Public Instance Methods

read(how_much) click to toggle source
# File lib/chef/streaming_cookbook_uploader.rb, line 170
def read(how_much)
  return nil if @part_no >= @parts.size

  how_much_current_part = @parts[@part_no].size - @part_offset

  how_much_current_part = if how_much_current_part > how_much
                            how_much
                          else
                            how_much_current_part
                          end

  how_much_next_part = how_much - how_much_current_part

  current_part = @parts[@part_no].read(@part_offset, how_much_current_part)

  # recurse into the next part if the current one was not large enough
  if how_much_next_part > 0
    @part_no += 1
    @part_offset = 0
    next_part = read(how_much_next_part)
    current_part + if next_part
                     next_part
                   else
                     ''
                   end
  else
    @part_offset += how_much_current_part
    current_part
  end
end
size() click to toggle source
# File lib/chef/streaming_cookbook_uploader.rb, line 166
def size
  @parts.inject(0) {|size, part| size + part.size}
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.