1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 08:07:44 +00:00

LibCompress: Move compressor construction out of ZlibCompressor()

This commit is contained in:
Tim Schumacher 2023-01-03 22:28:55 +01:00 committed by Andreas Kling
parent f4afee4278
commit 7e3625b0e2
2 changed files with 7 additions and 5 deletions

View file

@ -74,16 +74,18 @@ ErrorOr<NonnullOwnPtr<ZlibCompressor>> ZlibCompressor::construct(Core::Stream::H
// Zlib only defines Deflate as a compression method. // Zlib only defines Deflate as a compression method.
auto compression_method = ZlibCompressionMethod::Deflate; auto compression_method = ZlibCompressionMethod::Deflate;
auto zlib_compressor = TRY(adopt_nonnull_own_or_enomem(new (nothrow) ZlibCompressor(move(stream), compression_level))); // FIXME: Find a way to compress with Deflate's "Best" compression level.
auto compressor_stream = TRY(DeflateCompressor::construct(Core::Stream::Handle(*stream), static_cast<DeflateCompressor::CompressionLevel>(compression_level)));
auto zlib_compressor = TRY(adopt_nonnull_own_or_enomem(new (nothrow) ZlibCompressor(move(stream), move(compressor_stream))));
TRY(zlib_compressor->write_header(compression_method, compression_level)); TRY(zlib_compressor->write_header(compression_method, compression_level));
return zlib_compressor; return zlib_compressor;
} }
ZlibCompressor::ZlibCompressor(Core::Stream::Handle<Core::Stream::Stream> stream, ZlibCompressionLevel compression_level) ZlibCompressor::ZlibCompressor(Core::Stream::Handle<Core::Stream::Stream> stream, NonnullOwnPtr<Core::Stream::Stream> compressor_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(move(compressor_stream))
, m_compressor(DeflateCompressor::construct(Core::Stream::Handle(*m_output_stream), static_cast<DeflateCompressor::CompressionLevel>(compression_level)).release_value_but_fixme_should_propagate_errors())
{ {
} }

View file

@ -76,7 +76,7 @@ public:
static ErrorOr<ByteBuffer> compress_all(ReadonlyBytes bytes, ZlibCompressionLevel = ZlibCompressionLevel::Default); static ErrorOr<ByteBuffer> compress_all(ReadonlyBytes bytes, ZlibCompressionLevel = ZlibCompressionLevel::Default);
private: private:
ZlibCompressor(Core::Stream::Handle<Core::Stream::Stream>, ZlibCompressionLevel); ZlibCompressor(Core::Stream::Handle<Core::Stream::Stream> stream, NonnullOwnPtr<Core::Stream::Stream> compressor_stream);
ErrorOr<void> write_header(ZlibCompressionMethod, ZlibCompressionLevel); ErrorOr<void> write_header(ZlibCompressionMethod, ZlibCompressionLevel);
bool m_finished { false }; bool m_finished { false };