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

FIFO/priority message queue IPC channel. More...

#include <message_queue.h>

Inheritance diagram for contur::MessageQueue:

Public Member Functions

 MessageQueue (std::string name, std::size_t maxMessages=64, bool priorityMode=false)
 Creates a message queue.
 ~MessageQueue () override
 Destroys message queue.
 MessageQueue (const MessageQueue &)=delete
 Copy construction is disabled.
MessageQueueoperator= (const MessageQueue &)=delete
 Copy assignment is disabled.
 MessageQueue (MessageQueue &&) noexcept
 Move-constructs queue state.
MessageQueueoperator= (MessageQueue &&) noexcept
 Move-assigns queue state.
Result< std::size_t > write (std::span< const std::byte > data) override
 Enqueues a raw payload as a message.
Result< std::size_t > read (std::span< std::byte > buffer) override
 Dequeues one message and copies its payload to buffer.
void close () override
 Closes queue and clears pending messages.
bool isOpen () const noexcept override
 Returns whether queue is open.
std::string_view name () const noexcept override
 Queue name.
Result< void > send (const Message &message)
 Enqueues a typed message.
Result< Messagereceive ()
 Dequeues one message.
std::size_t size () const noexcept
 Number of currently queued messages.
std::size_t maxMessages () const noexcept
 Maximum queue length in messages.
bool isPriorityMode () const noexcept
 True when priority ordering is enabled.
Public Member Functions inherited from contur::IIpcChannel
virtual ~IIpcChannel ()=default

Private Attributes

std::unique_ptr< Impl > impl_

Detailed Description

FIFO/priority message queue IPC channel.

The queue can operate in FIFO mode or in priority mode, where higher-priority messages are received first.

Definition at line 30 of file message_queue.h.

Constructor & Destructor Documentation

◆ MessageQueue() [1/3]

contur::MessageQueue::MessageQueue ( std::string name,
std::size_t maxMessages = 64,
bool priorityMode = false )
explicit

Creates a message queue.

Parameters
nameQueue name.
maxMessagesMaximum number of queued messages.
priorityModeTrue enables priority ordering.

References maxMessages(), and name().

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

◆ ~MessageQueue()

contur::MessageQueue::~MessageQueue ( )
override

Destroys message queue.

◆ MessageQueue() [2/3]

contur::MessageQueue::MessageQueue ( const MessageQueue & )
delete

Copy construction is disabled.

References MessageQueue().

◆ MessageQueue() [3/3]

contur::MessageQueue::MessageQueue ( MessageQueue && )
noexcept

Move-constructs queue state.

References MessageQueue().

Member Function Documentation

◆ close()

void contur::MessageQueue::close ( )
overridevirtual

Closes queue and clears pending messages.

Implements contur::IIpcChannel.

References close().

Referenced by close().

◆ isOpen()

bool contur::MessageQueue::isOpen ( ) const
nodiscardoverridevirtualnoexcept

Returns whether queue is open.

Implements contur::IIpcChannel.

References isOpen().

Referenced by isOpen().

◆ isPriorityMode()

bool contur::MessageQueue::isPriorityMode ( ) const
nodiscardnoexcept

True when priority ordering is enabled.

References isPriorityMode().

Referenced by isPriorityMode().

◆ maxMessages()

std::size_t contur::MessageQueue::maxMessages ( ) const
nodiscardnoexcept

Maximum queue length in messages.

References maxMessages().

Referenced by maxMessages(), and MessageQueue().

◆ name()

std::string_view contur::MessageQueue::name ( ) const
nodiscardoverridevirtualnoexcept

Queue name.

Implements contur::IIpcChannel.

References name().

Referenced by MessageQueue(), and name().

◆ operator=() [1/2]

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

Copy assignment is disabled.

References MessageQueue().

◆ operator=() [2/2]

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

Move-assigns queue state.

References MessageQueue().

◆ read()

Result< std::size_t > contur::MessageQueue::read ( std::span< std::byte > buffer)
nodiscardoverridevirtual

Dequeues one message and copies its payload to buffer.

Returns
Copied byte count on success, or error.

Implements contur::IIpcChannel.

References read().

Referenced by read().

◆ receive()

Result< Message > contur::MessageQueue::receive ( )
nodiscard

Dequeues one message.

Returns
Message on success, or BufferEmpty/InvalidState.

References receive().

Referenced by receive().

◆ send()

Result< void > contur::MessageQueue::send ( const Message & message)
nodiscard

Enqueues a typed message.

Returns
Ok on success, or BufferFull/InvalidState.

References send().

Referenced by send().

◆ size()

std::size_t contur::MessageQueue::size ( ) const
nodiscardnoexcept

Number of currently queued messages.

References size().

Referenced by size().

◆ write()

Result< std::size_t > contur::MessageQueue::write ( std::span< const std::byte > data)
nodiscardoverridevirtual

Enqueues a raw payload as a message.

Returns
Payload byte count on success, or error.

Implements contur::IIpcChannel.

References write().

Referenced by write().

Member Data Documentation

◆ impl_

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

Definition at line 89 of file message_queue.h.


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