| // Copyright 2024 The ChromiumOS Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef PATCHMAKER_COMPRESSION_UTIL_H_ |
| #define PATCHMAKER_COMPRESSION_UTIL_H_ |
| |
| #include <memory> |
| #include <zstd.h> |
| |
| #include <base/files/file_path.h> |
| #include <brillo/secure_blob.h> |
| |
| namespace util { |
| |
| struct ScopedZstdCtxDeleter { |
| inline void operator()(ZSTD_CCtx* ctx) const { |
| if (ctx) { |
| ZSTD_freeCCtx(ctx); |
| } |
| } |
| }; |
| |
| using ScopedZstdCtx = std::unique_ptr<ZSTD_CCtx, ScopedZstdCtxDeleter>; |
| |
| bool Compress(const brillo::Blob& in, brillo::Blob* out); |
| |
| bool Decompress(const brillo::Blob& in, brillo::Blob* out); |
| |
| std::optional<size_t> GetCompressedSize(const base::FilePath& path); |
| |
| } // namespace util |
| |
| #endif // PATCHMAKER_COMPRESSION_UTIL_H_ |