WvStreams
|
00001 /* -*- Mode: C++ -*- 00002 * Worldvisions Weaver Software: 00003 * Copyright (C) 1997-2002 Net Integration Technologies, Inc. 00004 * 00005 * Gzip encoder/decoder based on zlib. 00006 */ 00007 #ifndef __WVGZIP_H 00008 #define __WVGZIP_H 00009 00010 #include "wvencoder.h" 00011 #include "wvencoderstream.h" 00012 00013 struct z_stream_s; 00014 00035 class WvGzipEncoder : public WvEncoder 00036 { 00037 public: 00038 enum Mode { 00039 Deflate, 00040 Inflate 00041 }; 00042 00048 WvGzipEncoder(Mode mode, size_t _out_limit = 0); 00049 virtual ~WvGzipEncoder(); 00050 00055 size_t out_limit; 00056 00066 bool ignore_decompression_errors; 00067 00075 bool full_flush; 00076 00077 protected: 00078 virtual bool _encode(WvBuf &inbuf, WvBuf &outbuf, bool flush); 00079 virtual bool _finish(WvBuf &outbuf); 00080 virtual bool _reset(); 00081 00082 private: 00083 struct z_stream_s *zstr; 00084 WvInPlaceBuf tmpbuf; 00085 Mode mode; 00086 size_t output; 00087 00088 void init(); 00089 void close(); 00090 void prepare(WvBuf *inbuf); 00091 bool process(WvBuf &outbuf, bool flush, bool finish); 00092 }; 00093 00094 00095 #endif // __WVGZIP_H