| // 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_ |