#include "zstdwrap.hh" #include #include #include #include #include "navmon.hh" using std::cout; using std::endl; using std::cerr; ZStdCompressor::ZStdCompressor(const std::function& emit, int compressionLevel): d_emit(emit) { d_z=ZSTD_createCStream(); ZSTD_initCStream(d_z, compressionLevel); d_outcapacity=ZSTD_CStreamOutSize(); d_out.dst = malloc(d_outcapacity); // ???? d_out.pos=0; d_out.size=d_outcapacity; } int ZStdCompressor::maxCompressionLevel() { return ZSTD_maxCLevel(); } ZStdCompressor::~ZStdCompressor() { for(;;) { auto res = ZSTD_endStream(d_z, &d_out); d_outputBytes += d_out.pos; try { d_emit((const char*)d_out.dst, d_out.pos); } catch(...){} // cout<<"res: "< src(inputcapacity); input.src = &src[0]; auto outputcapacity = ZSTD_DStreamOutSize(); std::vector dst(outputcapacity); output.dst = &dst[0]; for(;;) { input.pos=0; int ret = read(d_sourcefd, (char*)input.src, inputcapacity); if(ret <= 0) { cerr<<"Got EOF on input fd "<