mirror of
https://github.com/RGBCube/serenity
synced 2025-06-01 07:38:10 +00:00
LibCompress: Port DeflateCompressor
to Core::Stream
This commit is contained in:
parent
a212bc3052
commit
8cd2cf2b77
7 changed files with 107 additions and 97 deletions
|
@ -81,10 +81,9 @@ ErrorOr<NonnullOwnPtr<ZlibCompressor>> ZlibCompressor::construct(Core::Stream::H
|
|||
}
|
||||
|
||||
ZlibCompressor::ZlibCompressor(Core::Stream::Handle<Core::Stream::Stream> stream, ZlibCompressionLevel compression_level)
|
||||
: m_ak_output_stream(make<Core::Stream::WrapInAKOutputStream>(*stream))
|
||||
, m_output_stream(move(stream))
|
||||
: m_output_stream(move(stream))
|
||||
// FIXME: Find a way to compress with Deflate's "Best" compression level.
|
||||
, m_compressor(make<DeflateCompressor>(*m_ak_output_stream, static_cast<DeflateCompressor::CompressionLevel>(compression_level)))
|
||||
, m_compressor(make<DeflateCompressor>(Core::Stream::Handle(*m_output_stream), static_cast<DeflateCompressor::CompressionLevel>(compression_level)))
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -126,7 +125,7 @@ ErrorOr<size_t> ZlibCompressor::write(ReadonlyBytes bytes)
|
|||
{
|
||||
VERIFY(!m_finished);
|
||||
|
||||
size_t n_written = m_compressor->write(bytes);
|
||||
size_t n_written = TRY(m_compressor->write(bytes));
|
||||
m_adler32_checksum.update(bytes.trim(n_written));
|
||||
return n_written;
|
||||
}
|
||||
|
@ -150,7 +149,7 @@ ErrorOr<void> ZlibCompressor::finish()
|
|||
VERIFY(!m_finished);
|
||||
|
||||
if (is<DeflateCompressor>(m_compressor.ptr()))
|
||||
static_cast<DeflateCompressor*>(m_compressor.ptr())->final_flush();
|
||||
TRY(static_cast<DeflateCompressor*>(m_compressor.ptr())->final_flush());
|
||||
|
||||
NetworkOrdered<u32> adler_sum = m_adler32_checksum.digest();
|
||||
TRY(m_output_stream->write(adler_sum.bytes()));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue