/* */ #ifndef D_GZIP_STREAM_FILTER_H #define D_GZIP_STREAM_FILTER_H #include "StreamFilter.h" #include #include "a2functional.h" namespace aria2 { // GZipDecodingStreamFilter can decode both gzip and deflate format. class GZipDecodingStreamFilter : public StreamFilter { private: z_stream* strm_; bool finished_; size_t bytesProcessed_; static const size_t OUTBUF_LENGTH = 16_k; public: GZipDecodingStreamFilter(std::unique_ptr delegate = nullptr); virtual ~GZipDecodingStreamFilter(); virtual void init() CXX11_OVERRIDE; virtual ssize_t transform(const std::shared_ptr& out, const std::shared_ptr& segment, const unsigned char* inbuf, size_t inlen) CXX11_OVERRIDE; virtual bool finished() CXX11_OVERRIDE; virtual void release() CXX11_OVERRIDE; virtual const std::string& getName() const CXX11_OVERRIDE; virtual size_t getBytesProcessed() const CXX11_OVERRIDE { return bytesProcessed_; } static const std::string NAME; }; } // namespace aria2 #endif // D_GZIP_STREAM_FILTER_H