Create common base classes for buffered streams

Most streams are backed by a memory buffer. Create common base classes
for this functionality to avoid code duplication.
This commit is contained in:
Pierre Ossman
2020-05-15 20:20:53 +02:00
committed by Lauri Kasanen
parent 7f90205cf2
commit 92c7695981
19 changed files with 414 additions and 398 deletions

View File

@@ -24,38 +24,32 @@
#ifndef __RDR_ZLIBINSTREAM_H__
#define __RDR_ZLIBINSTREAM_H__
#include <rdr/InStream.h>
#include <rdr/BufferedInStream.h>
struct z_stream_s;
namespace rdr {
class ZlibInStream : public InStream {
class ZlibInStream : public BufferedInStream {
public:
ZlibInStream(size_t bufSize=0);
virtual ~ZlibInStream();
void setUnderlying(InStream* is, size_t bytesIn);
void flushUnderlying();
size_t pos();
void reset();
private:
void init();
void deinit();
size_t overrun(size_t itemSize, size_t nItems, bool wait);
bool decompress(bool wait);
virtual bool fillBuffer(size_t maxSize, bool wait);
private:
InStream* underlying;
size_t bufSize;
size_t offset;
z_stream_s* zs;
size_t bytesIn;
U8* start;
};
} // end of namespace rdr