// 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_BLOBFS_LOADER_INFO_H_
#define SRC_STORAGE_BLOBFS_LOADER_INFO_H_

#ifndef __Fuchsia__
#error Fuchsia-only Header
#endif

#include <memory>

#include "src/storage/blobfs/blob_verifier.h"
#include "src/storage/blobfs/compression/seekable_decompressor.h"

namespace blobfs {

// Info required by to read in and verify pages.
struct LoaderInfo {
  // Inode index for the blob.
  uint32_t node_index = 0;

  std::unique_ptr<BlobLayout> layout;

  // Used to verify the pages as they are read in.
  // TODO(https://fxbug.dev/42121190): Make BlobVerifier movable, unwrap from unique_ptr.
  std::unique_ptr<BlobVerifier> verifier;

  // An optional decompressor used by the chunked compression strategy. The decompressor is invoked
  // on the raw bytes received from the disk. If unset, blob data is assumed to be uncompressed.
  std::unique_ptr<SeekableDecompressor> decompressor;
};

}  // namespace blobfs

#endif  // SRC_STORAGE_BLOBFS_LOADER_INFO_H_
