| 175 | } |
| 176 | |
| 177 | Result<CompressResult> Compress(int64_t input_len, const uint8_t* input, |
| 178 | int64_t output_len, uint8_t* output) override { |
| 179 | stream_.next_in = const_cast<char*>(reinterpret_cast<const char*>(input)); |
| 180 | stream_.avail_in = static_cast<unsigned int>(std::min(input_len, kSizeLimit)); |
| 181 | stream_.next_out = reinterpret_cast<char*>(output); |
| 182 | stream_.avail_out = static_cast<unsigned int>(std::min(output_len, kSizeLimit)); |
| 183 | int ret; |
| 184 | |
| 185 | ret = BZ2_bzCompress(&stream_, BZ_RUN); |
| 186 | if (ret == BZ_RUN_OK) { |
| 187 | return CompressResult{input_len - stream_.avail_in, output_len - stream_.avail_out}; |
| 188 | } else { |
| 189 | return BZ2Error("bz2 compress failed: ", ret); |
| 190 | } |
| 191 | } |
| 192 | |
| 193 | Result<FlushResult> Flush(int64_t output_len, uint8_t* output) override { |
| 194 | stream_.next_in = nullptr; |
nothing calls this directly
no test coverage detected