#ifndef GZIP_H__ #define GZIP_H__ #include namespace i2p { namespace data { class GzipInflator { public: GzipInflator (); ~GzipInflator (); size_t Inflate (const uint8_t * in, size_t inLen, uint8_t * out, size_t outLen); /** @note @a os failbit will be set in case of error */ void Inflate (const uint8_t * in, size_t inLen, std::ostream& os); void Inflate (std::istream& in, std::ostream& out); private: z_stream m_Inflator; bool m_IsDirty; }; class GzipDeflator { public: GzipDeflator (); ~GzipDeflator (); void SetCompressionLevel (int level); size_t Deflate (const uint8_t * in, size_t inLen, uint8_t * out, size_t outLen); private: z_stream m_Deflator; bool m_IsDirty; }; } // data } // i2p #endif /* GZIP_H__ */