Abstract file-system interface.
virtual Result< void > mkdir(const std::string &path)=0
Creates a directory at path.
virtual Result< std::size_t > read(FileDescriptor fd, std::span< std::byte > buffer)=0
Reads bytes from an open descriptor.
virtual Result< void > close(FileDescriptor fd)=0
Closes an open descriptor.
virtual ~IFileSystem()=default
virtual Result< FileDescriptor > open(const std::string &path, OpenMode mode)=0
Opens a file path with the requested mode.
virtual Result< std::size_t > write(FileDescriptor fd, std::span< const std::byte > data)=0
Writes bytes to an open descriptor.
virtual Result< void > remove(const std::string &path)=0
Removes a file or an empty directory.
virtual Result< std::vector< DirectoryEntry > > listDir(const std::string &path) const =0
Lists immediate child entries in a directory.
virtual Result< InodeInfo > stat(const std::string &path) const =0
Returns metadata for path.
A result type that holds either a success value of type T or an ErrorCode.
Directory entry representation for SimpleFS.
Error codes and Result<T> type for fallible operations.
File descriptor types and descriptor-table abstraction.
constexpr InodeId INVALID_INODE_ID
Sentinel value indicating an invalid inode identifier.
std::uint64_t Tick
Simulation clock tick counter.
InodeType
Type of filesystem node.
std::uint32_t InodeId
Unique identifier for a filesystem inode.
OpenMode
Open mode bit flags.
Descriptor handle returned by open().
Public inode metadata returned by stat().
Tick createdAt
Creation timestamp in ticks.
InodeType type
Inode node type.
Tick modifiedAt
Last-modification timestamp in ticks.
std::size_t size
Logical size in bytes.
std::size_t blockCount
Number of allocated data blocks.