contur2
Loading...
Searching...
No Matches
simple_fs.h
Go to the documentation of this file.
1
3
4#pragma once
5
6#include <memory>
7
9
10namespace contur {
11
17 class SimpleFS final : public IFileSystem
18 {
19 public:
23 explicit SimpleFS(std::size_t totalBlocks = 256, std::size_t blockSize = 512);
24 ~SimpleFS() override;
25
26 SimpleFS(const SimpleFS &) = delete;
27 SimpleFS &operator=(const SimpleFS &) = delete;
28 SimpleFS(SimpleFS &&) noexcept;
29 SimpleFS &operator=(SimpleFS &&) noexcept;
30
35 [[nodiscard]] Result<FileDescriptor> open(const std::string &path, OpenMode mode) override;
36
41 [[nodiscard]] Result<std::size_t> read(FileDescriptor fd, std::span<std::byte> buffer) override;
42
47 [[nodiscard]] Result<std::size_t> write(FileDescriptor fd, std::span<const std::byte> data) override;
48
52 [[nodiscard]] Result<void> close(FileDescriptor fd) override;
53
57 [[nodiscard]] Result<void> mkdir(const std::string &path) override;
58
62 [[nodiscard]] Result<void> remove(const std::string &path) override;
63
67 [[nodiscard]] Result<std::vector<DirectoryEntry>> listDir(const std::string &path) const override;
68
72 [[nodiscard]] Result<InodeInfo> stat(const std::string &path) const override;
73
74 private:
75 struct Impl;
76 std::unique_ptr<Impl> impl_;
77 };
78
79} // namespace contur
Abstract file-system interface.
A result type that holds either a success value of type T or an ErrorCode.
Definition error.h:104
Result< void > mkdir(const std::string &path) override
Creates a directory at path.
Result< void > remove(const std::string &path) override
Removes file or empty directory at path.
Result< std::size_t > read(FileDescriptor fd, std::span< std::byte > buffer) override
Reads bytes from descriptor into buffer.
SimpleFS & operator=(const SimpleFS &)=delete
Result< FileDescriptor > open(const std::string &path, OpenMode mode) override
Opens file path with requested mode.
Result< InodeInfo > stat(const std::string &path) const override
Returns metadata for path.
Result< void > close(FileDescriptor fd) override
Closes open descriptor.
Result< std::size_t > write(FileDescriptor fd, std::span< const std::byte > data) override
Writes bytes from data into descriptor stream.
Result< std::vector< DirectoryEntry > > listDir(const std::string &path) const override
Lists child entries in directory.
std::unique_ptr< Impl > impl_
Definition simple_fs.h:76
SimpleFS(const SimpleFS &)=delete
~SimpleFS() override
SimpleFS(SimpleFS &&) noexcept
SimpleFS(std::size_t totalBlocks=256, std::size_t blockSize=512)
Constructs filesystem over simulated disk blocks.
IFileSystem interface for file-system operations.
Definition block.h:15
OpenMode
Open mode bit flags.
One child entry in a directory.
Descriptor handle returned by open().
Public inode metadata returned by stat().