1 // Copyright 2017 The Chromium OS Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef SRC_INCLUDE_PUFFIN_PUFFDIFF_H_ 6 #define SRC_INCLUDE_PUFFIN_PUFFDIFF_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "bsdiff/constants.h" 12 13 #include "puffin/common.h" 14 #include "puffin/stream.h" 15 16 namespace puffin { 17 18 // Performs a diff operation between input deflate streams and creates a patch 19 // that is used in the client to recreate the |dst| from |src|. 20 // |src| IN Source deflate stream. 21 // |dst| IN Destination deflate stream. 22 // |src_deflates| IN Deflate locations in |src|. 23 // |dst_deflates| IN Deflate locations in |dst|. 24 // |compressors| IN Compressors to use in the underlying bsdiff, e.g. bz2, 25 // brotli. 26 // |tmp_filepath| IN A path to a temporary file. The caller has the 27 // responsibility of unlinking the file after the call to 28 // |PuffDiff| finishes. 29 // |puffin_patch| OUT The patch that later can be used in |PuffPatch|. 30 bool PuffDiff(UniqueStreamPtr src, 31 UniqueStreamPtr dst, 32 const std::vector<BitExtent>& src_deflates, 33 const std::vector<BitExtent>& dst_deflates, 34 const std::vector<bsdiff::CompressorType>& compressors, 35 const std::string& tmp_filepath, 36 Buffer* patch); 37 38 // Similar to the function above, except that it accepts raw buffer rather than 39 // stream. 40 bool PuffDiff(const Buffer& src, 41 const Buffer& dst, 42 const std::vector<BitExtent>& src_deflates, 43 const std::vector<BitExtent>& dst_deflates, 44 const std::vector<bsdiff::CompressorType>& compressors, 45 const std::string& tmp_filepath, 46 Buffer* patch); 47 48 // The default puffdiff function that uses both bz2 and brotli to compress the 49 // patch data. 50 bool PuffDiff(const Buffer& src, 51 const Buffer& dst, 52 const std::vector<BitExtent>& src_deflates, 53 const std::vector<BitExtent>& dst_deflates, 54 const std::string& tmp_filepath, 55 Buffer* patch); 56 57 } // namespace puffin 58 59 #endif // SRC_INCLUDE_PUFFIN_PUFFDIFF_H_ 60