// SPDX-License-Identifier: BSD-2-Clause // author: Max Kellermann #pragma once #include "io/Reader.hxx" #include "util/StaticFifoBuffer.hxx" #include /** * A filter that decompresses data using zlib. */ class GunzipReader final : public Reader { Reader &next; bool eof = false; z_stream z; StaticFifoBuffer buffer; public: /** * Construct the filter. * * Throws on error. */ explicit GunzipReader(Reader &_next); ~GunzipReader() noexcept { inflateEnd(&z); } /* virtual methods from class Reader */ std::size_t Read(std::span dest) override; private: bool FillBuffer(); };