contur2
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:
Collaboration 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
 SimpleFS (const SimpleFS &)=delete
SimpleFSoperator= (const SimpleFS &)=delete
 SimpleFS (SimpleFS &&) noexcept
SimpleFSoperator= (SimpleFS &&) noexcept
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.

◆ ~SimpleFS()

contur::SimpleFS::~SimpleFS ( )
override

◆ SimpleFS() [2/3]

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

◆ SimpleFS() [3/3]

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

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.

◆ 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.

◆ 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.

◆ 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.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

◆ 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.

◆ 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.

◆ 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.

◆ 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.

Member Data Documentation

◆ impl_

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

Definition at line 76 of file simple_fs.h.


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