47 [[nodiscard]]
Result<std::
size_t>
write(std::span<const std::
byte> data) override;
51 [[nodiscard]]
Result<std::
size_t>
read(std::span<std::
byte> buffer) override;
57 [[nodiscard]]
bool isOpen() const noexcept override;
60 [[nodiscard]] std::string_view
name() const noexcept override;
71 [[nodiscard]] std::
size_t size() const noexcept;
Common interface for IPC channels.
MessageQueue(std::string name, std::size_t maxMessages=64, bool priorityMode=false)
Creates a message queue.
MessageQueue(const MessageQueue &)=delete
std::string_view name() const noexcept override
Queue name.
Result< Message > receive()
Dequeues one message.
Result< void > send(const Message &message)
Enqueues a typed message.
Result< std::size_t > write(std::span< const std::byte > data) override
Enqueues a raw payload as a message.
std::size_t maxMessages() const noexcept
Maximum queue length in messages.
std::unique_ptr< Impl > impl_
bool isOpen() const noexcept override
Returns whether queue is open.
bool isPriorityMode() const noexcept
True when priority ordering is enabled.
MessageQueue(MessageQueue &&) noexcept
std::size_t size() const noexcept
Number of currently queued messages.
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.
MessageQueue & operator=(const MessageQueue &)=delete
A result type that holds either a success value of type T or an ErrorCode.
IIpcChannel interface for inter-process communication channels.
Typed message used by MessageQueue.
std::vector< std::byte > payload
Opaque message payload bytes.
std::uint32_t priority
Scheduling priority (higher value = higher priority).
std::uint32_t type
User-defined message type.