Class: Gem::Package::TarWriter::BoundedStream

Inherits:
Object
  • Object
show all
Defined in:
lib/rubygems/package/tar_writer.rb

Overview

IO wrapper that allows writing a limited amount of data

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(io, limit) ⇒ BoundedStream

Wraps io and allows up to limit bytes to be written



30
31
32
33
34
# File 'lib/rubygems/package/tar_writer.rb', line 30

def initialize(io, limit)
  @io = io
  @limit = limit
  @written = 0
end

Instance Attribute Details

#limitObject (readonly)

Maximum number of bytes that can be written



20
21
22
# File 'lib/rubygems/package/tar_writer.rb', line 20

def limit
  @limit
end

#writtenObject (readonly)

Number of bytes written



25
26
27
# File 'lib/rubygems/package/tar_writer.rb', line 25

def written
  @written
end

Instance Method Details

#write(data) ⇒ Object

Writes data onto the IO, raising a FileOverflow exception if the number of bytes will be more than #limit



40
41
42
43
44
45
46
47
# File 'lib/rubygems/package/tar_writer.rb', line 40

def write(data)
  if data.bytesize + @written > @limit
    raise FileOverflow, "You tried to feed more data than fits in the file."
  end
  @io.write data
  @written += data.bytesize
  data.bytesize
end