wvgzip.h

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 
00063     bool ignore_decompression_errors;
00064 
00072     bool full_flush;
00073 
00074 protected:
00075     virtual bool _encode(WvBuf &inbuf, WvBuf &outbuf, bool flush);
00076     virtual bool _finish(WvBuf &outbuf);
00077     virtual bool _reset();
00078 
00079 private:
00080     struct z_stream_s *zstr;
00081     WvInPlaceBuf tmpbuf;
00082     Mode mode;
00083     size_t output;
00084 
00085     void init();
00086     void close();
00087     void prepare(WvBuf *inbuf);
00088     bool process(WvBuf &outbuf, bool flush, bool finish);
00089 };
00090 
00091 
00092 #endif // __WVGZIP_H

Generated on Mon Feb 5 10:54:29 2007 for WvStreams by  doxygen 1.5.1