![]() |
Contur 2
Educational OS kernel simulator
|
FIFO/priority message queue IPC channel. More...
#include <message_queue.h>
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. | |
| MessageQueue & | operator= (const MessageQueue &)=delete |
| Copy assignment is disabled. | |
| MessageQueue (MessageQueue &&) noexcept | |
| Move-constructs queue state. | |
| MessageQueue & | operator= (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< Message > | receive () |
| 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_ |
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.
|
explicit |
Creates a message queue.
| name | Queue name. |
| maxMessages | Maximum number of queued messages. |
| priorityMode | True enables priority ordering. |
References maxMessages(), and name().
Referenced by MessageQueue(), MessageQueue(), operator=(), and operator=().
|
override |
Destroys message queue.
|
delete |
Copy construction is disabled.
References MessageQueue().
|
noexcept |
Move-constructs queue state.
References MessageQueue().
|
overridevirtual |
Closes queue and clears pending messages.
Implements contur::IIpcChannel.
References close().
Referenced by close().
|
nodiscardoverridevirtualnoexcept |
Returns whether queue is open.
Implements contur::IIpcChannel.
References isOpen().
Referenced by isOpen().
|
nodiscardnoexcept |
True when priority ordering is enabled.
References isPriorityMode().
Referenced by isPriorityMode().
|
nodiscardnoexcept |
Maximum queue length in messages.
References maxMessages().
Referenced by maxMessages(), and MessageQueue().
|
nodiscardoverridevirtualnoexcept |
Queue name.
Implements contur::IIpcChannel.
References name().
Referenced by MessageQueue(), and name().
|
delete |
Copy assignment is disabled.
References MessageQueue().
|
noexcept |
Move-assigns queue state.
References MessageQueue().
|
nodiscardoverridevirtual |
Dequeues one message and copies its payload to buffer.
Implements contur::IIpcChannel.
References read().
Referenced by read().
|
nodiscardnoexcept |
|
nodiscardoverridevirtual |
Enqueues a raw payload as a message.
Implements contur::IIpcChannel.
References write().
Referenced by write().
|
private |
Definition at line 89 of file message_queue.h.