| 92 | } |
| 93 | |
| 94 | void LogContainer::compress(const uint16_t compressionMethod, const int compressionLevel) { |
| 95 | this->compressionMethod = compressionMethod; |
| 96 | |
| 97 | switch (compressionMethod) { |
| 98 | case 0: /* no compression */ |
| 99 | compressedFile = uncompressedFile; |
| 100 | compressedFileSize = uncompressedFileSize; |
| 101 | break; |
| 102 | |
| 103 | case 2: { /* zlib compress */ |
| 104 | /* deflate/compress data */ |
| 105 | uLong compressedBufferSize = compressBound(uncompressedFileSize); |
| 106 | compressedFile.resize(compressedBufferSize); // extend |
| 107 | int retVal = ::compress2( |
| 108 | reinterpret_cast<Byte *>(compressedFile.data()), |
| 109 | &compressedBufferSize, |
| 110 | reinterpret_cast<Byte *>(uncompressedFile.data()), |
| 111 | uncompressedFileSize, |
| 112 | compressionLevel); |
| 113 | if (retVal != Z_OK) |
| 114 | throw Exception("File::uncompressedFile2CompressedFile(): compress2 error"); |
| 115 | compressedFileSize = static_cast<uint32_t>(compressedBufferSize); |
| 116 | compressedFile.resize(compressedFileSize); // shrink |
| 117 | } |
| 118 | break; |
| 119 | |
| 120 | default: |
| 121 | throw Exception("LogContainer::compress(): unknown compression method"); |
| 122 | } |
| 123 | } |
| 124 | |
| 125 | } |
| 126 | } |
no test coverage detected