contur2
Loading...
Searching...
No Matches
contur::MessageQueue Class Referencefinal

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

#include <message_queue.h>

Inheritance diagram for contur::MessageQueue:
Collaboration 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
 MessageQueue (const MessageQueue &)=delete
MessageQueueoperator= (const MessageQueue &)=delete
 MessageQueue (MessageQueue &&) noexcept
MessageQueueoperator= (MessageQueue &&) noexcept
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.

◆ ~MessageQueue()

contur::MessageQueue::~MessageQueue ( )
override

◆ MessageQueue() [2/3]

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

◆ MessageQueue() [3/3]

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

Member Function Documentation

◆ close()

void contur::MessageQueue::close ( )
overridevirtual

Closes queue and clears pending messages.

Implements contur::IIpcChannel.

◆ isOpen()

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

Returns whether queue is open.

Implements contur::IIpcChannel.

◆ isPriorityMode()

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

True when priority ordering is enabled.

◆ maxMessages()

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

Maximum queue length in messages.

◆ name()

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

Queue name.

Implements contur::IIpcChannel.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

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

◆ receive()

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

Dequeues one message.

Returns
Message on success, or BufferEmpty/InvalidState.

◆ send()

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

Enqueues a typed message.

Returns
Ok on success, or BufferFull/InvalidState.

◆ size()

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

Number of currently queued messages.

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

Member Data Documentation

◆ impl_

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

Definition at line 81 of file message_queue.h.


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