CommRaT 2.0.0
C++20 Real-Time Messaging Framework
Loading...
Searching...
No Matches
mailbox_infrastructure_builder.hpp
Go to the documentation of this file.
1#pragma once
2
8#include <tuple>
9#include <utility>
10
11namespace commrat {
12
25template<typename ModuleType, typename UserRegistry>
27protected:
37 static auto create_mailbox_infrastructure(const ModuleConfig& config) {
38 // Always create tuple of MailboxSets
39 return create_mailbox_sets_impl(config, std::make_index_sequence<ModuleType::num_output_types>{});
40 }
41
52 template<std::size_t... Is>
53 static auto create_mailbox_sets_impl(const ModuleConfig& config, std::index_sequence<Is...>) {
54 // Create tuple with forwarding to ensure proper initialization
55 return std::make_tuple(create_mailbox_set<Is>(config)...);
56 }
57
68 template<std::size_t I>
69 static auto create_mailbox_set(const ModuleConfig& config) {
70 using OutputTypesTuple = typename ModuleType::OutputTypesTuple;
71 using OutputType = std::tuple_element_t<I, OutputTypesTuple>;
72
73 // MailboxSet template parameters: Registry, OutputType
75 set.template initialize<I>(config);
76 return set;
77 }
78};
79
80} // namespace commrat
Phase 8: Mailbox Infrastructure Builder.
static auto create_mailbox_sets_impl(const ModuleConfig &config, std::index_sequence< Is... >)
Helper to create MailboxSet tuple for multi-output modules.
static auto create_mailbox_set(const ModuleConfig &config)
Create a single MailboxSet for output type at index I.
static auto create_mailbox_infrastructure(const ModuleConfig &config)
Create mailbox infrastructure.
CommRaT - Modern C++ Real-Time Communication Framework.
Complete set of mailboxes for one output type.