ZlibCompressed::ZlibCompressed(Base &b, unsigned level):
- below(b),
- buffer_size(1024),
- in_buffer(0),
- out_buffer(0),
- stream_end(false),
- priv(0)
+ below(b)
{
-#ifdef WITH_ZLIB
mode = below.get_mode()&M_RDWR;
if(mode!=M_READ && mode!=M_WRITE)
throw invalid_access(mode);
+ init(level);
+}
+
+ZlibCompressed::ZlibCompressed(Base &b, Mode m, unsigned level):
+ below(b)
+{
+ mode = m&below.get_mode()&M_RDWR;
+ if(mode!=M_READ && mode!=M_WRITE)
+ throw invalid_access(m);
+
+ init(level);
+}
+
+void ZlibCompressed::init(unsigned level)
+{
+#ifdef WITH_ZLIB
+ buffer_size = 1024;
+ in_buffer = 0;
+ out_buffer = 0;
+ stream_end = false;
priv = new Private;
if(mode==M_WRITE)
below.signal_flush_required.connect(sigc::mem_fun(this, &ZlibCompressed::flush));
#else
+ (void)buffer_size;
+ (void)stream_end;
(void)level;
throw zlib_error("unsupported", -1);
#endif
delete priv;
}
+void ZlibCompressed::set_block(bool)
+{
+ throw logic_error("ZlibCompressed::set_block");
+}
+
void ZlibCompressed::flush()
{
#ifdef WITH_ZLIB
return processed;
}
+const Handle &ZlibCompressed::get_handle(Mode)
+{
+ throw logic_error("ZlibCompressed::get_handle");
+}
+
} // namespace IO
} // namespace Msp