48 static Result<std::unique_ptr<PuffinReader>> Make(
49 std::unique_ptr<InputFile> input_file,
50 std::optional<int64_t> footer_size = std::nullopt,
51 std::optional<int64_t> file_size = std::nullopt);
56 Result<FileMetadata> ReadFileMetadata();
61 Result<std::pair<BlobMetadata, std::vector<std::byte>>> ReadBlob(
66 Result<std::vector<std::pair<BlobMetadata, std::vector<std::byte>>>> ReadAll(
67 const std::vector<BlobMetadata>& blobs);
73 PuffinReader(std::unique_ptr<SeekableInputStream> stream, int64_t file_size,
74 std::optional<int64_t> known_footer_size);
76 Result<std::vector<std::byte>> ReadBytes(int64_t offset, int64_t length);
77 Result<int64_t> FooterSize();
78 Result<std::vector<std::byte>> ReadFooter(int64_t footer_size);
81 std::unique_ptr<SeekableInputStream> stream_;
85 std::optional<int64_t> known_footer_size_;