Helios Engine
A modular ECS based data-oriented C++23 game engine framework
Loading...
Searching...
No Matches
helios::ecs::AsyncMessageWriter< T > Class Template Reference

Type-safe writer for async messages. More...

#include <async_writer.hpp>

Public Member Functions

constexpr AsyncMessageWriter (MessageManager &manager) noexcept
 Constructs an AsyncMessageWriter from the message manager.
 AsyncMessageWriter (AsyncMessageQueue &async_queue)
 Constructs an AsyncMessageWriter that writes to the shared async message queue.
 AsyncMessageWriter (const AsyncMessageWriter &)=delete
 AsyncMessageWriter (AsyncMessageWriter &&) noexcept=default
 ~AsyncMessageWriter () noexcept=default
AsyncMessageWriteroperator= (const AsyncMessageWriter &)=delete
AsyncMessageWriteroperator= (AsyncMessageWriter &&) noexcept=default
void Write (T &&message)
 Writes a single message to the async queue (move).
void Write (const T &message)
 Writes a single message to the async queue (copy).
template<std::ranges::input_range R>
requires std::same_as<std::ranges::range_value_t<R>, T>
void WriteBulk (R &&messages)
 Writes multiple messages to the async queue in bulk.
template<typename... Args>
requires std::constructible_from<T, Args...>
void Emplace (Args &&... args)
 Constructs an message in-place and writes it to the async queue.

Detailed Description

template<AsyncMessageTrait T>
class helios::ecs::AsyncMessageWriter< T >

Type-safe writer for async messages.

Async messages use a lock-free concurrent queue, making writes thread-safe. This is suitable for messages produced from multiple threads concurrently (e.g., I/O callbacks, background workers). AsyncMessageWriter is intended to be short-lived (function-scoped).

Note
Thread-safe.
Template Parameters
TAsync message type satisfying AsyncMessageTrait

Definition at line 23 of file async_writer.hpp.

Constructor & Destructor Documentation

◆ AsyncMessageWriter() [1/4]

template<AsyncMessageTrait T>
helios::ecs::AsyncMessageWriter< T >::AsyncMessageWriter ( MessageManager & manager)
inlineexplicitconstexprnoexcept

Constructs an AsyncMessageWriter from the message manager.

Parameters
managerMutable reference to the message manager

Definition at line 29 of file async_writer.hpp.

◆ AsyncMessageWriter() [2/4]

template<AsyncMessageTrait T>
helios::ecs::AsyncMessageWriter< T >::AsyncMessageWriter ( AsyncMessageQueue & async_queue)
inlineexplicit

Constructs an AsyncMessageWriter that writes to the shared async message queue.

Parameters
async_queueReference to the async message queue

Definition at line 37 of file async_writer.hpp.

◆ AsyncMessageWriter() [3/4]

template<AsyncMessageTrait T>
helios::ecs::AsyncMessageWriter< T >::AsyncMessageWriter ( const AsyncMessageWriter< T > & )
delete

◆ AsyncMessageWriter() [4/4]

template<AsyncMessageTrait T>
helios::ecs::AsyncMessageWriter< T >::AsyncMessageWriter ( AsyncMessageWriter< T > && )
defaultnoexcept

◆ ~AsyncMessageWriter()

template<AsyncMessageTrait T>
helios::ecs::AsyncMessageWriter< T >::~AsyncMessageWriter ( )
defaultnoexcept

Member Function Documentation

◆ Emplace()

template<AsyncMessageTrait T>
template<typename... Args>
requires std::constructible_from<T, Args...>
void helios::ecs::AsyncMessageWriter< T >::Emplace ( Args &&... args)
inline

Constructs an message in-place and writes it to the async queue.

Template Parameters
ArgsConstructor argument types
Parameters
argsArguments to forward to the message constructor

Definition at line 82 of file async_writer.hpp.

◆ operator=() [1/2]

template<AsyncMessageTrait T>
AsyncMessageWriter & helios::ecs::AsyncMessageWriter< T >::operator= ( AsyncMessageWriter< T > && )
defaultnoexcept

◆ operator=() [2/2]

template<AsyncMessageTrait T>
AsyncMessageWriter & helios::ecs::AsyncMessageWriter< T >::operator= ( const AsyncMessageWriter< T > & )
delete

◆ Write() [1/2]

template<AsyncMessageTrait T>
void helios::ecs::AsyncMessageWriter< T >::Write ( const T & message)
inline

Writes a single message to the async queue (copy).

Parameters
messageMessage to write

Definition at line 58 of file async_writer.hpp.

◆ Write() [2/2]

template<AsyncMessageTrait T>
void helios::ecs::AsyncMessageWriter< T >::Write ( T && message)
inline

Writes a single message to the async queue (move).

Parameters
messageMessage to write

Definition at line 50 of file async_writer.hpp.

◆ WriteBulk()

template<AsyncMessageTrait T>
template<std::ranges::input_range R>
requires std::same_as<std::ranges::range_value_t<R>, T>
void helios::ecs::AsyncMessageWriter< T >::WriteBulk ( R && messages)
inline

Writes multiple messages to the async queue in bulk.

Template Parameters
RRange of messages
Parameters
messagesRange of messages to write

Definition at line 71 of file async_writer.hpp.