123456789_123456789_123456789_123456789_123456789_

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

Relationships & Source Files
Inherits: Object
Defined in: lib/rubygems/package/tar_writer.rb

Overview

IO wrapper that allows writing a limited amount of data

Class Method Summary

Instance Attribute Summary

  • #limit readonly

    Maximum number of bytes that can be written.

  • #written readonly

    Number of bytes written.

Instance Method Summary

Constructor Details

.new(io, limit) ⇒ BoundedStream

Wraps io and allows up to #limit bytes to be written

[ GitHub ]

  
# File 'lib/rubygems/package/tar_writer.rb', line 33

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

Instance Attribute Details

#limit (readonly)

Maximum number of bytes that can be written

[ GitHub ]

  
# File 'lib/rubygems/package/tar_writer.rb', line 23

attr_reader :limit

#written (readonly)

Number of bytes written

[ GitHub ]

  
# File 'lib/rubygems/package/tar_writer.rb', line 28

attr_reader :written

Instance Method Details

#write(data)

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

[ GitHub ]

  
# File 'lib/rubygems/package/tar_writer.rb', line 43

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