![]() |
CommRaT 2.0.0
C++20 Real-Time Messaging Framework
|
Multi-input infrastructure mixin. More...
#include <commrat/module/io/multi_input_infrastructure.hpp>
Classes | |
| struct | MakeHistoricalMailboxTuple |
| struct | MakeHistoricalMailboxTuple< std::tuple< Ts... > > |
Protected Types | |
| template<typename T > | |
| using | HistoricalMailboxFor = HistoricalMailbox< UserRegistry, 100 > |
| using | HistoricalMailboxTuple = typename MakeHistoricalMailboxTuple< InputTypesTuple >::type |
Protected Member Functions | |
| void | initialize_multi_input_mailboxes () |
| Initialize multi-input mailboxes. | |
| void | start_input_mailboxes () |
| Start all input mailboxes. | |
| template<std::size_t PrimaryIdx> | |
| void | start_secondary_input_threads () |
| Start receive threads for secondary inputs. | |
| void | join_secondary_input_threads () |
| Join all secondary input threads. | |
| template<std::size_t InputIdx> | |
| void | secondary_input_receive_loop () |
| Secondary input receive loop. | |
Protected Attributes | |
| std::optional< HistoricalMailboxTuple > | input_mailboxes_ |
| std::vector< std::thread > | secondary_input_threads_ |
Multi-input infrastructure mixin.
Provides mailbox creation, startup, and secondary input receive loops for modules that consume multiple input types.
| ModuleType | The derived Module class (CRTP) |
| UserRegistry | Message registry |
| InputTypesTuple | Tuple of input payload types |
| InputCount | Number of inputs |
Definition at line 35 of file multi_input_infrastructure.hpp.
|
protected |
Definition at line 39 of file multi_input_infrastructure.hpp.
|
protected |
Definition at line 50 of file multi_input_infrastructure.hpp.
|
inlineprotected |
Initialize multi-input mailboxes.
Creates one HistoricalMailbox per input type at the correct address.
Definition at line 60 of file multi_input_infrastructure.hpp.
|
inlineprotected |
Join all secondary input threads.
Definition at line 89 of file multi_input_infrastructure.hpp.
|
inlineprotected |
Secondary input receive loop.
Continuously receives from secondary input mailboxes to populate their historical buffers. Called in background threads.
Definition at line 195 of file multi_input_infrastructure.hpp.
References commrat::MultiInputInfrastructure< ModuleType, UserRegistry, InputTypesTuple, InputCount >::input_mailboxes_.
|
inlineprotected |
Start all input mailboxes.
Calls start() on each HistoricalMailbox and checks for errors.
Definition at line 69 of file multi_input_infrastructure.hpp.
|
inlineprotected |
Start receive threads for secondary inputs.
Spawns background threads to continuously receive from all inputs except the primary (which is handled by multi_input_loop).
| PrimaryIdx | Index of primary input |
Definition at line 82 of file multi_input_infrastructure.hpp.
|
protected |
Definition at line 51 of file multi_input_infrastructure.hpp.
Referenced by commrat::MultiInputInfrastructure< ModuleType, UserRegistry, InputTypesTuple, InputCount >::secondary_input_receive_loop().
|
protected |
Definition at line 53 of file multi_input_infrastructure.hpp.
Referenced by commrat::MultiInputInfrastructure< ModuleType, UserRegistry, InputTypesTuple, InputCount >::join_secondary_input_threads().