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);