blob: bf4270e14747db5e23511080a86aae5c4a033f18 [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_UTILS_READER_H_
#define SRC_STORAGE_VOLUME_IMAGE_UTILS_READER_H_
#include <string>
#include <fbl/span.h>
namespace storage::volume_image {
// Provides a reader interface to abstract platform, and devices particular nuisance to the image
// process.
//
// The reader requires an explicit offset, to allow compatibility with non posix interfaces, such as
// MTD.
class Reader {
public:
virtual ~Reader() = default;
// Returns empty string when data at [|offset|, |offset| + |buffer.size()|] are read into
// |buffer|.
//
// On error the returned result to contains a string describing the error.
virtual std::string Read(uint64_t offset, fbl::Span<uint8_t> buffer) const = 0;
};
} // namespace storage::volume_image
#endif // SRC_STORAGE_VOLUME_IMAGE_UTILS_READER_H_