blob: 3d63fbef8b8923406e3a65347fa94219643118cc [file] [log] [blame]
// Copyright 2020 The Fuchsia 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 SRC_STORAGE_VOLUME_IMAGE_OPTIONS_H_
#define SRC_STORAGE_VOLUME_IMAGE_OPTIONS_H_
#include <lib/fpromise/result.h>
#include <string>
#include <unordered_map>
namespace storage::volume_image {
// Supported compression schemas for the generated block images.
enum class CompressionSchema : uint64_t {
kNone = 0,
kLz4 = 1,
};
// Supported encryption mechanisms for the generated images.
enum class EncryptionType : uint64_t {
kNone = 0,
kZxcrypt = 1,
};
// Supported options for partitions.
enum class Option : uint64_t {
kNone = 0,
kEmpty = 1,
};
struct CompressionOptions {
// Compression type used.
CompressionSchema schema = CompressionSchema::kNone;
// 'schema' specific options and parameters.
std::unordered_map<std::string, uint64_t> options;
};
// Supported options for |AddressMap::options|.
enum class AddressMapOption : uint64_t {
kUnknown = 0,
kFill = 1,
};
// Template specialization provided in options.cc where the stringified version of the enums are
// defined.
template <typename OptionEnum>
std::string EnumAsString(OptionEnum option);
template <typename OptionEnum>
fpromise::result<OptionEnum, std::string> StringAsEnum(std::string_view option);
} // namespace storage::volume_image
#endif // SRC_STORAGE_VOLUME_IMAGE_OPTIONS_H_