class ZipTricks::Streamer::StoredWriter
Sends writes to the given `io`, and also registers all the data passing through it in a CRC32 checksum calculator. Is made to be completely interchangeable with the DeflatedWriter in terms of interface.
Constants
- CRC32_BUFFER_SIZE
The amount of bytes we will buffer before computing the intermediate CRC32 checksums. Benchmarks show that the optimum is 64KB (see `bench/buffered_crc32_bench.rb), if that is exceeded Zlib is going to perform internal CRC combine calls which will make the speed go down again.
Public Class Methods
# File lib/zip_tricks/streamer/stored_writer.rb, line 13 def initialize(io) @io = ZipTricks::WriteAndTell.new(io) @crc_compute = ZipTricks::StreamCRC32.new @crc = ZipTricks::WriteBuffer.new(@crc_compute, CRC32_BUFFER_SIZE) end
Public Instance Methods
Writes the given data to the contained IO object.
@param data data to be written @return self
# File lib/zip_tricks/streamer/stored_writer.rb, line 23 def <<(data) @io << data @crc << data self end
Returns the amount of data written and the CRC32 checksum. The return value can be directly used as the argument to {Streamer#update_last_entry_and_write_data_descriptor}
@return [Hash] a hash of `{crc32, compressed_size, uncompressed_size}`
# File lib/zip_tricks/streamer/stored_writer.rb, line 33 def finish @crc.flush {crc32: @crc_compute.to_i, compressed_size: @io.tell, uncompressed_size: @io.tell} end