Contur 2
Educational OS kernel simulator
Loading...
Searching...
No Matches
contur::SimpleFS Class Referencefinal

In-memory educational filesystem with inode + block allocation model. More...

#include <simple_fs.h>

Inheritance diagram for contur::SimpleFS:

Public Member Functions

 SimpleFS (std::size_t totalBlocks=256, std::size_t blockSize=512)
 Constructs filesystem over simulated disk blocks.
 ~SimpleFS () override
 Destroys filesystem instance.
 SimpleFS (const SimpleFS &)=delete
 Copy construction is disabled.
SimpleFSoperator= (const SimpleFS &)=delete
 Copy assignment is disabled.
 SimpleFS (SimpleFS &&) noexcept
 Move-constructs filesystem state.
SimpleFSoperator= (SimpleFS &&) noexcept
 Move-assigns filesystem state.
Result< FileDescriptoropen (const std::string &path, OpenMode mode) override
 Opens file path with requested mode.
Result< std::size_t > read (FileDescriptor fd, std::span< std::byte > buffer) override
 Reads bytes from descriptor into buffer.
Result< std::size_t > write (FileDescriptor fd, std::span< const std::byte > data) override
 Writes bytes from data into descriptor stream.
Result< void > close (FileDescriptor fd) override
 Closes open descriptor.
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::vector< DirectoryEntry > > listDir (const std::string &path) const override
 Lists child entries in directory.
Result< InodeInfostat (const std::string &path) const override
 Returns metadata for path.
Public Member Functions inherited from contur::IFileSystem
virtual ~IFileSystem ()=default

Private Attributes

std::unique_ptr< Impl > impl_

Detailed Description

In-memory educational filesystem with inode + block allocation model.

SimpleFS keeps all metadata and block data in memory and implements basic directory traversal, file read/write via descriptors, and stat/list operations suitable for kernel-simulator demos and tests.

Definition at line 17 of file simple_fs.h.

Constructor & Destructor Documentation

◆ SimpleFS() [1/3]

contur::SimpleFS::SimpleFS ( std::size_t totalBlocks = 256,
std::size_t blockSize = 512 )
explicit

Constructs filesystem over simulated disk blocks.

Parameters
totalBlocksNumber of simulated disk blocks.
blockSizeSize of each block in bytes.

Referenced by operator=(), operator=(), SimpleFS(), and SimpleFS().

◆ ~SimpleFS()

contur::SimpleFS::~SimpleFS ( )
override

Destroys filesystem instance.

◆ SimpleFS() [2/3]

contur::SimpleFS::SimpleFS ( const SimpleFS & )
delete

Copy construction is disabled.

References SimpleFS().

◆ SimpleFS() [3/3]

contur::SimpleFS::SimpleFS ( SimpleFS && )
noexcept

Move-constructs filesystem state.

References SimpleFS().

Member Function Documentation

◆ close()

Result< void > contur::SimpleFS::close ( FileDescriptor fd)
nodiscardoverridevirtual

Closes open descriptor.

Parameters
fdDescriptor to close.
Returns
Ok on success; NotFound if descriptor is unknown.

Implements contur::IFileSystem.

References close().

Referenced by close().

◆ listDir()

Result< std::vector< DirectoryEntry > > contur::SimpleFS::listDir ( const std::string & path) const
nodiscardoverridevirtual

Lists child entries in directory.

Parameters
pathAbsolute directory path.
Returns
Entries on success; error code otherwise.

Implements contur::IFileSystem.

References listDir().

Referenced by listDir().

◆ mkdir()

Result< void > contur::SimpleFS::mkdir ( const std::string & path)
nodiscardoverridevirtual

Creates a directory at path.

Parameters
pathAbsolute directory path.
Returns
Ok on success; AlreadyExists/NotFound/InvalidArgument otherwise.

Implements contur::IFileSystem.

References mkdir().

Referenced by mkdir().

◆ open()

Result< FileDescriptor > contur::SimpleFS::open ( const std::string & path,
OpenMode mode )
nodiscardoverridevirtual

Opens file path with requested mode.

Parameters
pathAbsolute file path.
modeOpen mode flags.
Returns
File descriptor on success or error code.

Implements contur::IFileSystem.

References open().

Referenced by open().

◆ operator=() [1/2]

SimpleFS & contur::SimpleFS::operator= ( const SimpleFS & )
delete

Copy assignment is disabled.

References SimpleFS().

◆ operator=() [2/2]

SimpleFS & contur::SimpleFS::operator= ( SimpleFS && )
noexcept

Move-assigns filesystem state.

References SimpleFS().

◆ read()

Result< std::size_t > contur::SimpleFS::read ( FileDescriptor fd,
std::span< std::byte > buffer )
nodiscardoverridevirtual

Reads bytes from descriptor into buffer.

Parameters
fdOpen descriptor.
bufferDestination buffer.
Returns
Number of bytes read or error code.

Implements contur::IFileSystem.

References read().

Referenced by read().

◆ remove()

Result< void > contur::SimpleFS::remove ( const std::string & path)
nodiscardoverridevirtual

Removes file or empty directory at path.

Parameters
pathAbsolute path.
Returns
Ok on success; NotFound/InvalidState/PermissionDenied otherwise.

Implements contur::IFileSystem.

References remove().

Referenced by remove().

◆ stat()

Result< InodeInfo > contur::SimpleFS::stat ( const std::string & path) const
nodiscardoverridevirtual

Returns metadata for path.

Parameters
pathAbsolute file or directory path.
Returns
Metadata on success; NotFound otherwise.

Implements contur::IFileSystem.

References stat().

Referenced by stat().

◆ write()

Result< std::size_t > contur::SimpleFS::write ( FileDescriptor fd,
std::span< const std::byte > data )
nodiscardoverridevirtual

Writes bytes from data into descriptor stream.

Parameters
fdOpen descriptor.
dataSource bytes.
Returns
Number of bytes written or error code.

Implements contur::IFileSystem.

References write().

Referenced by write().

Member Data Documentation

◆ impl_

std::unique_ptr<Impl> contur::SimpleFS::impl_
private

Definition at line 84 of file simple_fs.h.


The documentation for this class was generated from the following file: