contur2
Loading...
Searching...
No Matches
i_filesystem.h
Go to the documentation of this file.
1
3
4#pragma once
5
6#include <span>
7#include <string>
8#include <vector>
9
10#include "contur/core/error.h"
11
14
15namespace contur {
16
18 struct InodeInfo
19 {
22
25
27 std::size_t size = 0;
28
30 std::size_t blockCount = 0;
31
34
37 };
38
41 {
42 public:
43 virtual ~IFileSystem() = default;
44
49 [[nodiscard]] virtual Result<FileDescriptor> open(const std::string &path, OpenMode mode) = 0;
50
55 [[nodiscard]] virtual Result<std::size_t> read(FileDescriptor fd, std::span<std::byte> buffer) = 0;
56
61 [[nodiscard]] virtual Result<std::size_t> write(FileDescriptor fd, std::span<const std::byte> data) = 0;
62
66 [[nodiscard]] virtual Result<void> close(FileDescriptor fd) = 0;
67
71 [[nodiscard]] virtual Result<void> mkdir(const std::string &path) = 0;
72
76 [[nodiscard]] virtual Result<void> remove(const std::string &path) = 0;
77
81 [[nodiscard]] virtual Result<std::vector<DirectoryEntry>> listDir(const std::string &path) const = 0;
82
86 [[nodiscard]] virtual Result<InodeInfo> stat(const std::string &path) const = 0;
87 };
88
89} // namespace contur
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.
Definition error.h:104
Directory entry representation for SimpleFS.
Error codes and Result<T> type for fallible operations.
File descriptor types and descriptor-table abstraction.
Definition block.h:15
constexpr InodeId INVALID_INODE_ID
Sentinel value indicating an invalid inode identifier.
Definition types.h:55
std::uint64_t Tick
Simulation clock tick counter.
Definition types.h:18
InodeType
Type of filesystem node.
Definition types.h:37
std::uint32_t InodeId
Unique identifier for a filesystem inode.
Definition types.h:33
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.