blob: 59677a6621b935519cd884b6d88254de962446cd [file] [log] [blame]
// Copyright (c) 2013 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 CHROMEOS_PLATFORM_MEMENTO_UPDATER_DISKIMAGE_INSTALLER_H__
#define CHROMEOS_PLATFORM_MEMENTO_UPDATER_DISKIMAGE_INSTALLER_H__
#include "general_installer.h"
#include <stdint.h>
#include <string>
namespace chromeos_memento_updater {
enum DiskImageInstallFormat{
kImage = 0,
kZip = 1
};
class DiskImageInstaller : public GeneralInstaller {
public:
DiskImageInstaller(const std::string& running_dir,
const std::string& board,
const std::string& image_path,
DiskImageInstallFormat format);
~DiskImageInstaller();
const static int kBlockSize = 512;
protected:
FRIEND_TEST(DiskImageInstallerTest, PrepareImage);
FRIEND_TEST(DiskImageInstallerTest, PrepareZipImage);
virtual int PrepareImage(const int channel_id, FILE* out_pipe);
// Read the offset (by number of blocks) of a partition in an image by cgpt
// Return -1 on error
int64_t GetImageOffsetInBlock(const std::string& image_path,
const int partition);
// Read the size (by number of blocks) of a partition in an image by cgpt
// Return -1 on error
int64_t GetImageSizeInBlock(const std::string& image_path,
const int partition);
int DecompressImage(FILE** fp);
std::string image_path_;
DiskImageInstallFormat format_;
};
} // namespace chromeos_memento_updater
#endif // CHROMEOS_PLATFORM_MEMENTO_UPDATER_DISKIMAGE_INSTALLER_H__