Contur 2
Educational OS kernel simulator
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
26 ~SimpleFS() override;
27
29 SimpleFS(const SimpleFS &) = delete;
30
32 SimpleFS &operator=(const SimpleFS &) = delete;
34 SimpleFS(SimpleFS &&) noexcept;
35
37 SimpleFS &operator=(SimpleFS &&) noexcept;
38
43 [[nodiscard]] Result<FileDescriptor> open(const std::string &path, OpenMode mode) override;
44
49 [[nodiscard]] Result<std::size_t> read(FileDescriptor fd, std::span<std::byte> buffer) override;
50
55 [[nodiscard]] Result<std::size_t> write(FileDescriptor fd, std::span<const std::byte> data) override;
56
60 [[nodiscard]] Result<void> close(FileDescriptor fd) override;
61
65 [[nodiscard]] Result<void> mkdir(const std::string &path) override;
66
70 [[nodiscard]] Result<void> remove(const std::string &path) override;
71
75 [[nodiscard]] Result<std::vector<DirectoryEntry>> listDir(const std::string &path) const override;
76
80 [[nodiscard]] Result<InodeInfo> stat(const std::string &path) const override;
81
82 private:
83 struct Impl;
84 std::unique_ptr<Impl> impl_;
85 };
86
87} // 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
Copy assignment is disabled.
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:84
SimpleFS(const SimpleFS &)=delete
Copy construction is disabled.
~SimpleFS() override
Destroys filesystem instance.
SimpleFS(SimpleFS &&) noexcept
Move-constructs filesystem state.
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().