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

Unified I/O manager for files and socket-like resources. More...

#include <io_manager.h>

Inheritance diagram for contur::IoManager:

Public Member Functions

 IoManager (IFileSystem &fileSystem, DeviceManager &devices)
 Constructs an I/O manager bound to filesystem and device registry.
 ~IoManager () override
 Destroys the manager.
 IoManager (const IoManager &)=delete
IoManageroperator= (const IoManager &)=delete
 IoManager (IoManager &&) noexcept
IoManageroperator= (IoManager &&) noexcept
Result< void > registerFile (RegisterValue resourceId, std::string path, IoResourceKind kind) override
 Registers a file resource ID to a filesystem path.
Result< void > registerSocket (RegisterValue resourceId, std::size_t capacity, IoResourceKind kind) override
 Registers a socket resource ID.
Result< IoDescriptoropen (RegisterValue resourceId, IoResourceKind kind, OpenMode mode) override
 Opens a resource and returns a kernel I/O descriptor.
Result< void > close (IoDescriptor fd) override
 Closes a kernel I/O descriptor.
Result< RegisterValueread (IoDescriptor fd, ProcessId pid) override
 Reads one value from the descriptor.
Result< void > write (IoDescriptor fd, RegisterValue value) override
 Writes one value to the descriptor.
void setWakeCallback (IoWakeCallback callback) override
 Sets the wake callback invoked when I/O becomes ready.
Public Member Functions inherited from contur::IIoManager
virtual ~IIoManager ()=default

Private Attributes

std::unique_ptr< Impl > impl_

Detailed Description

Unified I/O manager for files and socket-like resources.

Definition at line 16 of file io_manager.h.

Constructor & Destructor Documentation

◆ IoManager() [1/3]

contur::IoManager::IoManager ( IFileSystem & fileSystem,
DeviceManager & devices )

Constructs an I/O manager bound to filesystem and device registry.

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

◆ ~IoManager()

contur::IoManager::~IoManager ( )
override

Destroys the manager.

◆ IoManager() [2/3]

contur::IoManager::IoManager ( const IoManager & )
delete

References IoManager().

◆ IoManager() [3/3]

contur::IoManager::IoManager ( IoManager && )
noexcept

References IoManager().

Member Function Documentation

◆ close()

Result< void > contur::IoManager::close ( IoDescriptor fd)
nodiscardoverridevirtual

Closes a kernel I/O descriptor.

Parameters
fdDescriptor to close.
Returns
Ok on success; NotFound otherwise.

Implements contur::IIoManager.

References close().

Referenced by close().

◆ open()

Result< IoDescriptor > contur::IoManager::open ( RegisterValue resourceId,
IoResourceKind kind,
OpenMode mode )
nodiscardoverridevirtual

Opens a resource and returns a kernel I/O descriptor.

Parameters
resourceIdNumeric resource identifier.
kindResource kind.
modeOpen mode flags (files only).
Returns
Descriptor on success; error on failure.

Implements contur::IIoManager.

References open().

Referenced by open().

◆ operator=() [1/2]

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

References IoManager().

◆ operator=() [2/2]

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

References IoManager().

◆ read()

Result< RegisterValue > contur::IoManager::read ( IoDescriptor fd,
ProcessId pid )
nodiscardoverridevirtual

Reads one value from the descriptor.

Parameters
fdDescriptor to read from.
pidRequesting process id (for blocking waits).
Returns
Read value on success; ResourceBusy if the call should block.

Implements contur::IIoManager.

References read().

Referenced by read().

◆ registerFile()

Result< void > contur::IoManager::registerFile ( RegisterValue resourceId,
std::string path,
IoResourceKind kind )
nodiscardoverridevirtual

Registers a file resource ID to a filesystem path.

Parameters
resourceIdNumeric resource identifier.
pathAbsolute file path.
kindFile or LAN file resource kind.
Returns
Ok on success; AlreadyExists/InvalidArgument otherwise.

Implements contur::IIoManager.

References registerFile().

Referenced by registerFile().

◆ registerSocket()

Result< void > contur::IoManager::registerSocket ( RegisterValue resourceId,
std::size_t capacity,
IoResourceKind kind )
nodiscardoverridevirtual

Registers a socket resource ID.

Parameters
resourceIdNumeric resource identifier.
capacityMaximum queued elements.
kindSocket resource kind.
Returns
Ok on success; AlreadyExists/InvalidArgument otherwise.

Implements contur::IIoManager.

References registerSocket().

Referenced by registerSocket().

◆ setWakeCallback()

void contur::IoManager::setWakeCallback ( IoWakeCallback callback)
overridevirtual

Sets the wake callback invoked when I/O becomes ready.

Implements contur::IIoManager.

References setWakeCallback().

Referenced by setWakeCallback().

◆ write()

Result< void > contur::IoManager::write ( IoDescriptor fd,
RegisterValue value )
nodiscardoverridevirtual

Writes one value to the descriptor.

Parameters
fdDescriptor to write to.
valueValue to write.
Returns
Ok on success; ResourceBusy if the call should block.

Implements contur::IIoManager.

References write().

Referenced by write().

Member Data Documentation

◆ impl_

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

Definition at line 55 of file io_manager.h.


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