WvStreams
wvgzip.h
1 /* -*- Mode: C++ -*-
2  * Worldvisions Weaver Software:
3  * Copyright (C) 1997-2002 Net Integration Technologies, Inc.
4  *
5  * Gzip encoder/decoder based on zlib.
6  */
7 #ifndef __WVGZIP_H
8 #define __WVGZIP_H
9 
10 #include "wvencoder.h"
11 #include "wvencoderstream.h"
12 
13 struct z_stream_s;
14 
35 class WvGzipEncoder : public WvEncoder
36 {
37 public:
38  enum Mode {
41  };
42 
48  WvGzipEncoder(Mode mode, size_t _out_limit = 0);
49  virtual ~WvGzipEncoder();
50 
55  size_t out_limit;
56 
67 
75  bool full_flush;
76 
77 protected:
78  virtual bool _encode(WvBuf &inbuf, WvBuf &outbuf, bool flush);
79  virtual bool _finish(WvBuf &outbuf);
80  virtual bool _reset();
81 
82 private:
83  struct z_stream_s *zstr;
84  WvInPlaceBuf tmpbuf;
85  Mode mode;
86  size_t output;
87 
88  void init();
89  void close();
90  void prepare(WvBuf *inbuf);
91  bool process(WvBuf &outbuf, bool flush, bool finish);
92 };
93 
94 
95 #endif // __WVGZIP_H