blob: 5ba3984a3101dc625491b54cf8f88ef356b4def0 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* License); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
// #include "gzip_compressor.h"
// using namespace common;
//
// {
// namespace storage
// {
// GzipCompressor::GzipCompressor() : compressed_buf()
// {
// zstream_valid_ = false;
// }
// GzipCompressor::~GzipCompressor()
// {
// end_zstream();
// }
// int GzipCompressor::reset()
// {
// int ret = E_OK;
// if (RET_FAIL(end_zstream())) {
// } else if (RET_FAIL(init_zstream())) {
// }
// return ret;
// }
// int GzipCompressor::init_zstream()
// {
// if (zstream_valid_) {
// return E_OK;
// }
// compress_stream_.zalloc = (alloc_func)0; // Z_NULL
// compress_stream_.zfree = (free_func)0;
// compress_stream_.opaque = (voidpf)0;
// compress_stream_.next_in = 0;
// compress_stream_.avail_in = 0;
// compress_stream_.next_out = 0;
// compress_stream_.avail_out = 0;
// memset(compressed_buf, 0, DEFLATE_BUFFER_SIZE);
// if (deflateInit2(&compress_stream_,
// Z_DEFAULT_COMPRESSION,
// Z_DEFLATED,
// 31,
// 8,
// Z_DEFAULT_STRATEGY) != Z_OK) {
// //log_err("gzip deflateInit2 failed");
// return E_COMPRESS_ERR;
// }
// zstream_valid_ = true;
// return E_OK;
// }
// int GzipCompressor::end_zstream()
// {
// if (!zstream_valid_) {
// return E_OK;
// }
// if(deflateEnd(&compress_stream_) != Z_OK) {
// //log_err("deflateEnd failed");
// return E_COMPRESS_ERR;
// }
// zstream_valid_ = false;
// return E_OK;
// }
// int GzipCompressor::compress_into_bytestream(char *uncompressed_buf,
// uint32_t uncompressed_buf_len,
// ByteStream &out)
// {
// int ret = Z_OK;
// compress_stream_.next_in = (Bytef *)uncompressed_buf;
// compress_stream_.avail_in = uncompressed_buf_len;
// compress_stream_.next_out = (Bytef *)compressed_buf;
// compress_stream_.avail_out = DEFLATE_BUFFER_SIZE;
// if (uncompressed_buf == nullptr || uncompressed_buf_len == 0) { // no more
// data will come in
// if (compress_stream_.next_out) {
// while (ret != Z_STREAM_END) {
// ret = deflate(&compress_stream_, Z_FINISH);
// if(ret != Z_OK && ret != Z_STREAM_END) {
// //log_err("deflate failed");
// return E_COMPRESS_ERR;
// }
// out.write_buf(compressed_buf, DEFLATE_BUFFER_SIZE -
// compress_stream_.avail_out); compress_stream_.next_out = (Bytef
// *)compressed_buf; compress_stream_.avail_out = DEFLATE_BUFFER_SIZE;
// }
// }
// return E_OK;
// }
// for (;;) {
// ret = deflate(&compress_stream_, Z_NO_FLUSH);
// if (ret != Z_OK) {
// //log_err("deflate failed");
// return E_COMPRESS_ERR;
// }
// if (compress_stream_.avail_in == 0) { // current input data are all
// consumed
// out.write_buf(compressed_buf, DEFLATE_BUFFER_SIZE -
// compress_stream_.avail_out); compress_stream_.next_out = (Bytef
// *)compressed_buf; compress_stream_.avail_out = DEFLATE_BUFFER_SIZE;
// break;
// }
// else if (compress_stream_.avail_out == 0) { // no more space for output
// out.write_buf(compressed_buf, DEFLATE_BUFFER_SIZE);
// compress_stream_.next_out = (Bytef *)compressed_buf;
// compress_stream_.avail_out = DEFLATE_BUFFER_SIZE;
// }
// }
// return E_OK;
// }
// int GzipCompressor::compress(char *uncompressed_buf,
// uint32_t uncompressed_buf_len,
// char *&compressed_buf,
// uint32_t &compressed_buf_len)
// {
// int ret = E_OK;
// ByteStream out(DEFLATE_BUFFER_SIZE, MOD_COMPRESSOR_OBJ);
// if (RET_FAIL(compress_into_bytestream(uncompressed_buf,
// uncompressed_buf_len, out))) {
// return ret;
// }
// if (RET_FAIL(compress_into_bytestream(nullptr, 0, out))) {
// return ret;
// }
// compressed_buf = get_bytes_from_bytestream(out);
// compressed_buf_len = out.total_size();
// out.destroy();
// return ret;
// }
// GzipDeCompressor::GzipDeCompressor() : decompressed_buf()
// {
// zstream_valid_ = false;
// }
// GzipDeCompressor::~GzipDeCompressor()
// {
// end_zstream();
// }
// int GzipDeCompressor::init_zstream()
// {
// if (zstream_valid_) {
// return E_OK;
// }
// decompress_stream_.zalloc = (alloc_func)0; // Z_NULL
// decompress_stream_.zfree = (free_func)0;
// decompress_stream_.opaque = (voidpf)0;
// decompress_stream_.next_in = 0;
// decompress_stream_.avail_in = 0;
// decompress_stream_.next_out = 0;
// decompress_stream_.avail_out = 0;
// memset(decompressed_buf, 0, INFLATE_BUFFER_SIZE);
// if (inflateInit2(&decompress_stream_, 31) != Z_OK) {
// //log_err("inflateInit2 failed");
// return E_COMPRESS_ERR;
// }
// zstream_valid_ = true;
// return E_OK;
// }
// int GzipDeCompressor::end_zstream()
// {
// if (!zstream_valid_) {
// return E_OK;
// }
// if(inflateEnd(&decompress_stream_) != Z_OK) {
// //log_err("inflateEnd failed");
// return E_COMPRESS_ERR;
// }
// zstream_valid_ = false;
// return E_OK;
// }
// int GzipDeCompressor::reset()
// {
// int ret = E_OK;
// if (RET_FAIL(end_zstream())) {
// } else if (RET_FAIL(init_zstream())) {
// }
// return ret;
// }
// int GzipDeCompressor::decompress_into_bytestream(char *compressed_buf,
// uint32_t compressed_buf_len,
// ByteStream &out)
// {
// int ret = Z_OK;
// decompress_stream_.next_in = (Bytef *)compressed_buf;
// decompress_stream_.avail_in = compressed_buf_len;
// decompress_stream_.next_out = (Bytef *)decompressed_buf;
// decompress_stream_.avail_out = INFLATE_BUFFER_SIZE;
// if (compressed_buf == nullptr || compressed_buf_len == 0) {
// if (decompress_stream_.next_out) {
// while (ret != Z_STREAM_END) {
// ret = inflate(&decompress_stream_, Z_FINISH);
// if(ret != Z_OK && ret != Z_STREAM_END) {
// //log_err("inflate failed");
// return E_COMPRESS_ERR;
// }
// out.write_buf(decompressed_buf, INFLATE_BUFFER_SIZE -
// decompress_stream_.avail_out); decompress_stream_.next_out = (Bytef
// *)decompressed_buf; decompress_stream_.avail_out =
// INFLATE_BUFFER_SIZE;
// }
// }
// return E_OK;
// }
// for (;;) {
// ret = inflate(&decompress_stream_, Z_NO_FLUSH);
// if (ret == Z_STREAM_END) {
// out.write_buf(decompressed_buf, INFLATE_BUFFER_SIZE -
// decompress_stream_.avail_out); break;
// }
// if (ret != Z_OK) {
// //log_err("inflate failed");
// return E_COMPRESS_ERR;
// }
// if (decompress_stream_.avail_in == 0) {
// out.write_buf(decompressed_buf, INFLATE_BUFFER_SIZE -
// decompress_stream_.avail_out); decompress_stream_.next_out = (Bytef
// *)decompressed_buf; decompress_stream_.avail_out = INFLATE_BUFFER_SIZE;
// break;
// }
// else if (decompress_stream_.avail_out == 0) {
// out.write_buf(decompressed_buf, INFLATE_BUFFER_SIZE);
// decompress_stream_.next_out = (Bytef *)decompressed_buf;
// decompress_stream_.avail_out = INFLATE_BUFFER_SIZE;
// }
// }
// return E_OK;
// }
// int GzipDeCompressor::uncompress(char *compressed_buf,
// uint32_t compressed_buf_len,
// char *&uncompressed_buf,
// uint32_t &uncompressed_buf_len)
// {
// int ret = E_OK;
// ByteStream out(INFLATE_BUFFER_SIZE, MOD_COMPRESSOR_OBJ);
// if(RET_FAIL(decompress_into_bytestream(compressed_buf, compressed_buf_len,
// out))) {
// return ret;
// }
// if (RET_FAIL(decompress_into_bytestream(nullptr, 0, out))) {
// return ret;
// }
// uncompressed_buf = get_bytes_from_bytestream(out);
// uncompressed_buf_len = out.total_size();
// // uncompressed_buf[uncompressed_buf_len] = '\0';
// out.destroy();
// return ret;
// }
// } // end namespace storage
// } // end