Is there some magic required to obtain a “zlib sync flush” when using boost::iostreams::zlib_compressor ? Just invoking flush on the filter, or strict_sync on a filtering_ostream containing it doesn’t see to do the job (ie I want the compressor to flush enough that the decompressor can recover all the bytes consumed by the compressor so far, without closing the stream).
Looking at the header, there seem to be some “flush codes” defined (notably a sync_flush) but it’s unclear to me how they should be used (bearing in mind my compressor is just added into a filtering_ostream).
It turns out there is a fundamental problem that the
symmetric_filterthatzlib_compressorinherits from isn’t itself flushable (which seems ratheran oversight).
Possibly adding such support to
symmetric_filterwould be as simple as adding theflushable_tagand exposing the existing private flush methods, but for now I can live with it.