1aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 2aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Copyright (C) 2010 The Android Open Source Project 3aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 4aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Licensed under the Apache License, Version 2.0 (the "License"); 5aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// you may not use this file except in compliance with the License. 6aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// You may obtain a copy of the License at 7aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 8aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// http://www.apache.org/licenses/LICENSE-2.0 9aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 10aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Unless required by applicable law or agreed to in writing, software 11aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// distributed under the License is distributed on an "AS IS" BASIS, 12aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// See the License for the specific language governing permissions and 14aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// limitations under the License. 15aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// 167a22d791f58f8de711a4d70f247c1c14833c8e4bDarin Petkov 17072359ca138504065e1e0c1189eb38c09576d324Alex Vakulenko#ifndef UPDATE_ENGINE_PAYLOAD_GENERATOR_FULL_UPDATE_GENERATOR_H_ 18072359ca138504065e1e0c1189eb38c09576d324Alex Vakulenko#define UPDATE_ENGINE_PAYLOAD_GENERATOR_FULL_UPDATE_GENERATOR_H_ 197a22d791f58f8de711a4d70f247c1c14833c8e4bDarin Petkov 20072359ca138504065e1e0c1189eb38c09576d324Alex Vakulenko#include <string> 21072359ca138504065e1e0c1189eb38c09576d324Alex Vakulenko#include <vector> 22072359ca138504065e1e0c1189eb38c09576d324Alex Vakulenko 23477aec2166a571cbe28081d806c3226e8b31b6e9Alex Deymo#include <base/macros.h> 24477aec2166a571cbe28081d806c3226e8b31b6e9Alex Deymo 258cc502dacbccdab96824d42287f230ce04004784Sen Jiang#include "update_engine/payload_generator/blob_file_writer.h" 26477aec2166a571cbe28081d806c3226e8b31b6e9Alex Deymo#include "update_engine/payload_generator/operations_generator.h" 27f1cbe1783dd025bd7243a8df12f20548196cc023Alex Deymo#include "update_engine/payload_generator/payload_generation_config.h" 287a22d791f58f8de711a4d70f247c1c14833c8e4bDarin Petkov 297a22d791f58f8de711a4d70f247c1c14833c8e4bDarin Petkovnamespace chromeos_update_engine { 307a22d791f58f8de711a4d70f247c1c14833c8e4bDarin Petkov 31477aec2166a571cbe28081d806c3226e8b31b6e9Alex Deymoclass FullUpdateGenerator : public OperationsGenerator { 327a22d791f58f8de711a4d70f247c1c14833c8e4bDarin Petkov public: 33477aec2166a571cbe28081d806c3226e8b31b6e9Alex Deymo FullUpdateGenerator() = default; 34477aec2166a571cbe28081d806c3226e8b31b6e9Alex Deymo 357fad7b7d3d7dcdaa7b17855fe333fcc4da000b46Alex Deymo // OperationsGenerator override. 36f1cbe1783dd025bd7243a8df12f20548196cc023Alex Deymo // Creates a full update for the target image defined in |config|. |config| 37f1cbe1783dd025bd7243a8df12f20548196cc023Alex Deymo // must be a valid payload generation configuration for a full payload. 38ebdf17d4202c67933764135bfc1cece629829201Sen Jiang // Populates |aops|, with data about the update operations, and writes 39ebdf17d4202c67933764135bfc1cece629829201Sen Jiang // relevant data to |blob_file|. 40477aec2166a571cbe28081d806c3226e8b31b6e9Alex Deymo bool GenerateOperations( 41f1cbe1783dd025bd7243a8df12f20548196cc023Alex Deymo const PayloadGenerationConfig& config, 42ebdf17d4202c67933764135bfc1cece629829201Sen Jiang const PartitionConfig& old_part, 437fad7b7d3d7dcdaa7b17855fe333fcc4da000b46Alex Deymo const PartitionConfig& new_part, 448cc502dacbccdab96824d42287f230ce04004784Sen Jiang BlobFileWriter* blob_file, 45ebdf17d4202c67933764135bfc1cece629829201Sen Jiang std::vector<AnnotatedOperation>* aops) override; 467fad7b7d3d7dcdaa7b17855fe333fcc4da000b46Alex Deymo 477a22d791f58f8de711a4d70f247c1c14833c8e4bDarin Petkov private: 48477aec2166a571cbe28081d806c3226e8b31b6e9Alex Deymo DISALLOW_COPY_AND_ASSIGN(FullUpdateGenerator); 497a22d791f58f8de711a4d70f247c1c14833c8e4bDarin Petkov}; 507a22d791f58f8de711a4d70f247c1c14833c8e4bDarin Petkov 517a22d791f58f8de711a4d70f247c1c14833c8e4bDarin Petkov} // namespace chromeos_update_engine 527a22d791f58f8de711a4d70f247c1c14833c8e4bDarin Petkov 53072359ca138504065e1e0c1189eb38c09576d324Alex Vakulenko#endif // UPDATE_ENGINE_PAYLOAD_GENERATOR_FULL_UPDATE_GENERATOR_H_ 54