join 1.0
lightweight network framework library
Loading...
Searching...
No Matches
zstream.hpp
Go to the documentation of this file.
1
25#ifndef JOIN_DATA_ZSTREAM_HPP
26#define JOIN_DATA_ZSTREAM_HPP
27
28// libjoin.
29#include <join/streambuf.hpp>
30
31// Libraries.
32#include <zlib.h>
33
34// C++.
35#include <iostream>
36#include <memory>
37
38namespace join
39{
44 {
45 public:
52 Zstreambuf (std::streambuf* streambuf, int format, bool own = false);
53
58 Zstreambuf (const Zstreambuf& other) = delete;
59
65 Zstreambuf& operator= (const Zstreambuf& other) = delete;
66
71 Zstreambuf (Zstreambuf&& other);
72
79
83 virtual ~Zstreambuf ();
84
85 protected:
90 virtual int_type underflow () override;
91
97 virtual int_type overflow (int_type c = traits_type::eof ()) override;
98
103 virtual int_type sync () override;
104
106 static const std::streamsize _bufsize = 16384;
107
109 std::unique_ptr<z_stream> _inflate;
110
112 int _instate = Z_OK;
113
115 std::unique_ptr<z_stream> _deflate;
116
118 std::unique_ptr<char[]> _buf;
119 };
120
124 class Zstream : public std::iostream
125 {
126 public:
131 {
132 Deflate = -MAX_WBITS,
133 Zlib = MAX_WBITS,
134 Gzip = MAX_WBITS + 16,
135 };
136
142 Zstream (std::iostream& stream, Format format = Zlib);
143
148 Zstream (const Zstream& other) = delete;
149
155 Zstream& operator= (const Zstream& other) = delete;
156
161 Zstream (Zstream&& other);
162
168 Zstream& operator= (Zstream&& other);
169
173 virtual ~Zstream () = default;
174
175 protected:
178 };
179}
180
181#endif
stream buffer decorator.
Definition streambuf.hpp:38
zlib stream.
Definition zstream.hpp:125
Format
data format.
Definition zstream.hpp:131
@ Zlib
Definition zstream.hpp:133
@ Deflate
Definition zstream.hpp:132
@ Gzip
Definition zstream.hpp:134
Zstream(const Zstream &other)=delete
copy constructor.
Zstream(std::iostream &stream, Format format=Zlib)
create the zlib stream instance.
Definition zstream.cpp:203
virtual ~Zstream()=default
destroy the zlib stream instance.
Zstream & operator=(const Zstream &other)=delete
copy assignment operator.
Zstreambuf _zbuf
zlib stream buffer
Definition zstream.hpp:177
zlib stream buffer.
Definition zstream.hpp:44
Zstreambuf & operator=(const Zstreambuf &other)=delete
copy assignment operator.
virtual int_type underflow() override
reads characters from the associated input sequence to the get area.
Definition zstream.cpp:98
Zstreambuf(std::streambuf *streambuf, int format, bool own=false)
create the zlib stream buffer instance.
Definition zstream.cpp:39
std::unique_ptr< char[]> _buf
internal buffer.
Definition zstream.hpp:118
virtual int_type overflow(int_type c=traits_type::eof()) override
writes characters to the associated output sequence from the put area.
Definition zstream.cpp:142
int _instate
inflate state.
Definition zstream.hpp:112
std::unique_ptr< z_stream > _inflate
inflate context.
Definition zstream.hpp:109
static const std::streamsize _bufsize
internal buffer size.
Definition zstream.hpp:106
Zstreambuf(const Zstreambuf &other)=delete
copy constructor.
virtual ~Zstreambuf()
destroy the zlib stream buffer instance.
Definition zstream.cpp:78
virtual int_type sync() override
synchronizes the buffers with the associated character sequence.
Definition zstream.cpp:189
std::unique_ptr< z_stream > _deflate
deflate context.
Definition zstream.hpp:115
Definition acceptor.hpp:32