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
WvGzipEncoder
An encoder implementing Gzip encryption and decryption.
Definition: wvgzip.h:35
WvEncoder
The base encoder class.
Definition: wvencoder.h:67
WvGzipEncoder::_finish
virtual bool _finish(WvBuf &outbuf)
Template method implementation of finish().
Definition: wvgzip.cc:91
WvGzipEncoder::full_flush
bool full_flush
Do full flushes.
Definition: wvgzip.h:75
WvGzipEncoder::_encode
virtual bool _encode(WvBuf &inbuf, WvBuf &outbuf, bool flush)
Template method implementation of encode().
Definition: wvgzip.cc:66
WvInPlaceBuf
The in place raw memory buffer type.
Definition: wvbuf.h:164
WvGzipEncoder::_reset
virtual bool _reset()
Template method implementation of reset().
Definition: wvgzip.cc:98
WvBufBase< unsigned char >
Specialization of WvBufBase for unsigned char type buffers intended for use with raw memory buffers.
Definition: wvbuf.h:22
WvGzipEncoder::ignore_decompression_errors
bool ignore_decompression_errors
Continue decompression if errors are found.
Definition: wvgzip.h:66
WvGzipEncoder::Mode
Mode
Definition: wvgzip.h:38
WvGzipEncoder::out_limit
size_t out_limit
Limit the amount of output produced in one call to encode().
Definition: wvgzip.h:55
WvEncoder::finish
bool finish(WvBuf &outbuf)
Tells the encoder that NO MORE DATA will ever be encoded.
Definition: wvencoder.cc:49
WvGzipEncoder::Inflate
@ Inflate
Definition: wvgzip.h:40
WvGzipEncoder::Deflate
@ Deflate
Definition: wvgzip.h:39
WvEncoder::flush
bool flush(WvBuf &inbuf, WvBuf &outbuf, bool finish=false)
Flushes the encoder and optionally finishes it.
Definition: wvencoder.h:163
WvGzipEncoder::WvGzipEncoder
WvGzipEncoder(Mode mode, size_t _out_limit=0)
Creates a Gzip encoder.
Definition: wvgzip.cc:14