Add streaming support to LZ4 compress routine
In preparation to enable lz4diff streaming mode.
Instead of append data to std::vector, lz4diff APIs
now accept a sink function which we send computed data
to. This way, caller can choose to cache data in memory,
or stream writes to disk as data comes.
Bug: 206729162
Test: th
Change-Id: Ib1aea5c1b730d30a1b4814f8d5dd8ce3a8b43826
diff --git a/lz4diff/lz4diff_compress.h b/lz4diff/lz4diff_compress.h
index 7cbb9ac..a1ac8fa 100644
--- a/lz4diff/lz4diff_compress.h
+++ b/lz4diff/lz4diff_compress.h
@@ -18,11 +18,12 @@
#define UPDATE_ENGINE_LZ4DIFF_LZ4DIFF_COMPRESS_H_
#include "lz4diff_format.h"
-
#include <string_view>
namespace chromeos_update_engine {
+using SinkFunc = std::function<size_t(const uint8_t*, size_t)>;
+
// |TryCompressBlob| and |TryDecompressBlob| are inverse function of each other.
// One compresses data into fixed size output chunks, one decompresses fixed
// size blocks.
@@ -36,6 +37,11 @@
const std::vector<CompressedBlock>& block_info,
const bool zero_padding_enabled,
const CompressionAlgorithm compression_algo);
+bool TryCompressBlob(std::string_view blob,
+ const std::vector<CompressedBlock>& block_info,
+ const bool zero_padding_enabled,
+ const CompressionAlgorithm compression_algo,
+ const SinkFunc& sink);
Blob TryDecompressBlob(std::string_view blob,
const std::vector<CompressedBlock>& block_info,
@@ -44,11 +50,6 @@
const std::vector<CompressedBlock>& block_info,
const bool zero_padding_enabled);
-[[nodiscard]] std::string_view ToStringView(const Blob& blob) noexcept;
-
-[[nodiscard]] std::string_view ToStringView(const void* data,
- size_t size) noexcept;
-
std::ostream& operator<<(std::ostream& out, const CompressedBlockInfo& info);
std::ostream& operator<<(std::ostream& out, const CompressedBlock& block);