blob: cf3d043ab6cf5c920f369d028f9f88c79b843712 [file] [log] [blame]
// 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_