bool ZlibCompress(const google::protobuf::Message& res, butil::IOBuf* buf) { butil::IOBufAsZeroCopyOutputStream wrapper(buf); google::protobuf::io::GzipOutputStream::Options zlib_opt; zlib_opt.format = google::protobuf::io::GzipOutputStream::ZLIB; google::protobuf::io::GzipOutputStream zlib(&wrapper, zlib_opt); return res.SerializeToZeroCopyStream(&zlib) && zlib.Close(); }
// zlibd data string cpp_zlibd(string& pData) { string unzipped; ZlibDecompressor zlib(new StringSink(unzipped)); zlib.Put((PBYTE)pData.data(),pData.length()); zlib.MessageEnd(); return unzipped; }
// zlibc data string cpp_zlibc(string& pData) { string zipped; ZlibCompressor zlib(new StringSink(zipped),5); // 1 is fast, 9 is slow zlib.Put((PBYTE)pData.data(), pData.length()); zlib.MessageEnd(); return zipped; }
bool ZlibDecompress(const butil::IOBuf& data, google::protobuf::Message* req) { butil::IOBufAsZeroCopyInputStream wrapper(data); google::protobuf::io::GzipInputStream zlib( &wrapper, google::protobuf::io::GzipInputStream::ZLIB); return ParsePbFromZeroCopyStream(req, &zlib); }