SpECTRE  v2024.04.12
LinkedMessageQueue< Id, tmpl::list< QueueTags... > > Class Template Reference

A collection of queues of asynchronously received data. More...

#include <LinkedMessageQueue.hpp>

Public Types

using IdType = Id
 
using queue_tags_list = tmpl::list< QueueTags... >
 

Public Member Functions

template<typename Tag >
void insert (const LinkedMessageId< Id > &id_and_previous, typename Tag::type message)
 Insert data into a given queue at a given ID. All queues must receive data with the same collection of id_and_previous, but are not required to receive them in the same order.
 
std::optional< Id > next_ready_id () const
 The next ID in the received sequence, if all queues have received messages at that ID.
 
tuples::TaggedTuple< QueueTags... > extract ()
 All the messages received at the time indicated by next_ready_id(). It is an error to call this function if next_ready_id() would return an empty optional. This function removes the stored messages from the queues, advancing the internal sequence ID.
 
void pup (PUP::er &p)
 

Detailed Description

template<typename Id, typename... QueueTags>
class LinkedMessageQueue< Id, tmpl::list< QueueTags... > >

A collection of queues of asynchronously received data.

This class is designed to collect asynchronously received messages, possibly from multiple sources, until sufficient data has been received for processing. Each tag in QueueTags defines a queue of messages of type Tag::type.


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