Class: ZipTricks::StreamCRC32
- Inherits:
-
Object
- Object
- ZipTricks::StreamCRC32
- Defined in:
- lib/zip_tricks/stream_crc32.rb
Overview
A simple stateful class for keeping track of a CRC32 value through multiple writes
Class Method Summary collapse
-
.from_io(io) ⇒ Fixnum
Compute a CRC32 value from an IO object.
Instance Method Summary collapse
-
#<<(blob) ⇒ self
Append data to the CRC32.
-
#append(crc32, blob_size) ⇒ Fixnum
Appends a known CRC32 value to the current one, and combines the contained CRC32 value in-place.
-
#initialize ⇒ StreamCRC32
constructor
Creates a new streaming CRC32 calculator.
-
#to_i ⇒ Fixnum
Returns the CRC32 value computed so far.
Constructor Details
#initialize ⇒ StreamCRC32
Creates a new streaming CRC32 calculator
16 17 18 |
# File 'lib/zip_tricks/stream_crc32.rb', line 16 def initialize @crc = Zlib.crc32('') end |
Class Method Details
.from_io(io) ⇒ Fixnum
Compute a CRC32 value from an IO object. The object should respond to read
and eof?
9 10 11 12 13 |
# File 'lib/zip_tricks/stream_crc32.rb', line 9 def self.from_io(io) crc = new crc << io.read(1024 * 512) until io.eof? crc.to_i end |
Instance Method Details
#<<(blob) ⇒ self
Append data to the CRC32. Updates the contained CRC32 value in place.
24 25 26 27 |
# File 'lib/zip_tricks/stream_crc32.rb', line 24 def <<(blob) @crc = Zlib.crc32_combine(@crc, Zlib.crc32(blob), blob.bytesize) self end |
#append(crc32, blob_size) ⇒ Fixnum
Appends a known CRC32 value to the current one, and combines the contained CRC32 value in-place.
42 43 44 |
# File 'lib/zip_tricks/stream_crc32.rb', line 42 def append(crc32, blob_size) @crc = Zlib.crc32_combine(@crc, crc32, blob_size) end |
#to_i ⇒ Fixnum
Returns the CRC32 value computed so far
32 33 34 |
# File 'lib/zip_tricks/stream_crc32.rb', line 32 def to_i @crc end |