class UploadService::FilePart

Attributes

first_byte[R]

@return [Integer]

last_byte[R]

@return [Integer]

size[R]

@return [Integer]

source[R]

@return [String,Pathname,File,Tempfile]

Public Class Methods

new(options = {}) click to toggle source
# File lib/fluent/plugin/upload_service.rb, line 148
def initialize(options = {})
  @source = options[:source]
  @first_byte = options[:offset]
  @last_byte = @first_byte + options[:size]
  @size = options[:size]
  @file = nil
end

Public Instance Methods

close() click to toggle source
# File lib/fluent/plugin/upload_service.rb, line 181
def close
  @file.close if @file
end
read(bytes = nil, output_buffer = nil) click to toggle source
# File lib/fluent/plugin/upload_service.rb, line 168
def read(bytes = nil, output_buffer = nil)
  open_file unless @file
  read_from_file(bytes, output_buffer)
end
rewind() click to toggle source
# File lib/fluent/plugin/upload_service.rb, line 173
def rewind
  if @file
    @file.seek(@first_byte)
    @position = @first_byte
  end
  0
end

Private Instance Methods

open_file() click to toggle source
# File lib/fluent/plugin/upload_service.rb, line 187
def open_file
  @file = File.open(@source, 'rb')
  rewind
end
read_from_file(bytes, output_buffer) click to toggle source
# File lib/fluent/plugin/upload_service.rb, line 192
def read_from_file(bytes, output_buffer)
  if bytes
    data = @file.read([remaining_bytes, bytes].min)
    data = nil if data == ''
  else
    data = @file.read(remaining_bytes)
  end
  @position += data ? data.bytesize : 0
  output_buffer ? output_buffer.replace(data || '') : data
end
remaining_bytes() click to toggle source
# File lib/fluent/plugin/upload_service.rb, line 203
def remaining_bytes
  @last_byte - @position
end