| // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef UPDATE_ENGINE_PAYLOAD_GENERATOR_METADATA_H_ | |
| #define UPDATE_ENGINE_PAYLOAD_GENERATOR_METADATA_H_ | |
| #include <string> | |
| #include <vector> | |
| #include "update_engine/payload_generator/delta_diff_generator.h" | |
| #include "update_engine/payload_generator/graph_types.h" | |
| namespace chromeos_update_engine { | |
| class Metadata { | |
| public: | |
| // Reads metadata from old image and new image and determines | |
| // the smallest way to encode the metadata for the diff. | |
| // If there's no change in the metadata, it creates a MOVE | |
| // operation. If there is a change, the smallest of REPLACE, REPLACE_BZ, | |
| // or BSDIFF wins. It writes the diff to data_fd and updates data_file_size | |
| // accordingly. It also adds the required operation to the graph and adds the | |
| // metadata extents to blocks. | |
| // Returns true on success. | |
| static bool DeltaReadMetadata(Graph* graph, | |
| std::vector<DeltaDiffGenerator::Block>* blocks, | |
| const std::string& old_image, | |
| const std::string& new_image, | |
| int data_fd, | |
| off_t* data_file_size); | |
| private: | |
| // This should never be constructed. | |
| DISALLOW_IMPLICIT_CONSTRUCTORS(Metadata); | |
| }; | |
| }; // namespace chromeos_update_engine | |
| #endif // UPDATE_ENGINE_PAYLOAD_GENERATOR_METADATA_H_ |