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

LibCompress: Switch DeflateDecompressor to a fallible constructor

We don't have anything fallible in there yet, but we will soon switch
the seekback buffer to the new `CircularBuffer`, which has a fallible
constructor.

We have to do the same for the internal `GzipDecompressor::Member`
class, as it needs to construct a `DeflateCompressor` from its received
stream.
This commit is contained in:
Tim Schumacher 2023-01-01 00:38:05 +01:00 committed by Andrew Kaster
parent d717a08003
commit d23f0a7405
4 changed files with 34 additions and 16 deletions

View file

@ -56,25 +56,24 @@ public:
private:
class Member {
public:
Member(BlockHeader header, Core::Stream::Stream& stream)
: m_header(header)
, m_stream(Core::Stream::Handle<Core::Stream::Stream>(stream))
{
}
static ErrorOr<NonnullOwnPtr<Member>> construct(BlockHeader header, Core::Stream::Stream&);
BlockHeader m_header;
DeflateDecompressor m_stream;
NonnullOwnPtr<DeflateDecompressor> m_stream;
Crypto::Checksum::CRC32 m_checksum;
size_t m_nread { 0 };
private:
Member(BlockHeader, NonnullOwnPtr<DeflateDecompressor>);
};
Member const& current_member() const { return m_current_member.value(); }
Member& current_member() { return m_current_member.value(); }
Member const& current_member() const { return *m_current_member; }
Member& current_member() { return *m_current_member; }
NonnullOwnPtr<Core::Stream::Stream> m_input_stream;
u8 m_partial_header[sizeof(BlockHeader)];
size_t m_partial_header_offset { 0 };
Optional<Member> m_current_member;
OwnPtr<Member> m_current_member {};
bool m_eof { false };
};