• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_PUFFPATCH_H_
6 #define SRC_INCLUDE_PUFFIN_PUFFPATCH_H_
7 
8 #include "puffin/common.h"
9 #include "puffin/stream.h"
10 
11 namespace puffin {
12 
13 extern const char kMagic[];
14 extern const size_t kMagicLength;
15 
16 // Applies the puffin patch to deflate stream |src| to create deflate stream
17 // |dst|. This function is used in the client and internally uses bspatch to
18 // apply the patch. The input streams are of type |shared_ptr| because
19 // |PuffPatch| needs to wrap these streams into another ones and we don't want
20 // to loose the ownership of the input streams. Optionally one can cache the
21 // puff buffers individually if non-zero value is passed |max_cache_size|.
22 //
23 // |src|           IN  Source deflate stream.
24 // |dst|           IN  Destination deflate stream.
25 // |patch|         IN  The input patch.
26 // |patch_length|  IN  The length of the patch.
27 // |max_cache_size|IN  The maximum amount of memory to cache puff buffers.
28 bool PuffPatch(UniqueStreamPtr src,
29                UniqueStreamPtr dst,
30                const uint8_t* patch,
31                size_t patch_length,
32                size_t max_cache_size = 0);
33 
34 }  // namespace puffin
35 
36 #endif  // SRC_INCLUDE_PUFFIN_PUFFPATCH_H_
37