30#include "iceberg/iceberg_export.h"
31#include "iceberg/result.h"
44 virtual Status
Seek(int64_t position) = 0;
47 virtual Result<int64_t>
Read(std::span<std::byte> out) = 0;
54 virtual Status
ReadFully(int64_t position, std::span<std::byte> out) = 0;
69 virtual Status
Write(std::span<const std::byte> data) = 0;
87 virtual Result<int64_t>
Size()
const = 0;
90 virtual Result<std::unique_ptr<SeekableInputStream>>
Open() = 0;
102 virtual Result<std::unique_ptr<PositionOutputStream>>
Create() = 0;
121 virtual Result<std::unique_ptr<InputFile>> NewInputFile(std::string file_location);
127 virtual Result<std::unique_ptr<InputFile>> NewInputFile(std::string file_location,
131 virtual Result<std::unique_ptr<OutputFile>> NewOutputFile(std::string file_location);
140 virtual Result<std::string> ReadFile(
const std::string& file_location,
141 std::optional<size_t> length);
148 virtual Status WriteFile(
const std::string& file_location, std::string_view content);
154 virtual Status
DeleteFile(
const std::string& file_location) {
155 return NotImplemented(
"DeleteFile not implemented");
Pluggable module for reading, writing, and deleting files.
Definition file_io.h:115
virtual Status DeleteFile(const std::string &file_location)
Delete a file at the given location.
Definition file_io.h:154
Handle for creating a writable file.
Definition file_io.h:94
virtual Result< std::unique_ptr< PositionOutputStream > > CreateOrOverwrite()=0
Create a new output stream, replacing any existing file.
virtual std::string_view location() const =0
File location represented by this handle.
virtual Result< std::unique_ptr< PositionOutputStream > > Create()=0
Create a new output stream and fail if the file already exists.
Positioned byte stream for writing file contents.
Definition file_io.h:61
virtual Result< int64_t > Position() const =0
Return the current write position.
virtual Status Write(std::span< const std::byte > data)=0
Write all bytes in data at the current position.
virtual Status Flush()=0
Flush buffered data to the underlying store.
virtual Status Close()=0
Close the stream. Implementations should allow repeated Close calls.