Container System 0.1.0
High-performance C++20 type-safe container framework with SIMD-accelerated serialization
Loading...
Searching...
No Matches
kcenon::container::integration::messaging_container_builder Class Reference

Builder pattern for messaging containers. More...

#include <messaging_integration.h>

Collaboration diagram for kcenon::container::integration::messaging_container_builder:
Collaboration graph

Public Member Functions

 messaging_container_builder ()
 
messaging_container_buildersource (const std::string &id, const std::string &sub_id="")
 
messaging_container_buildertarget (const std::string &id, const std::string &sub_id="")
 
messaging_container_buildermessage_type (const std::string &type)
 
template<typename T >
messaging_container_builderset (const std::string &key, T &&value)
 Set a value by key (unified API)
 
messaging_container_builderoptimize_for_size ()
 
messaging_container_builderoptimize_for_speed ()
 
std::shared_ptr< value_container > build ()
 

Private Attributes

std::shared_ptr< value_container > container_
 
bool size_optimized_ = false
 
bool speed_optimized_ = false
 

Detailed Description

Builder pattern for messaging containers.

Definition at line 99 of file messaging_integration.h.

Constructor & Destructor Documentation

◆ messaging_container_builder()

kcenon::container::integration::messaging_container_builder::messaging_container_builder ( )

Definition at line 178 of file messaging_integration.cpp.

179 : container_(std::make_shared<value_container>()) {
180}

Member Function Documentation

◆ build()

std::shared_ptr< value_container > kcenon::container::integration::messaging_container_builder::build ( )

Definition at line 211 of file messaging_integration.cpp.

211 {
212 // Apply optimizations based on settings
213 if (size_optimized_) {
214 // TODO: Apply size optimizations
215 } else if (speed_optimized_) {
216 // TODO: Apply speed optimizations
217 }
218
219 auto result = container_;
220 container_ = std::make_shared<value_container>(); // Reset for potential reuse
221 return result;
222}

References container_, size_optimized_, and speed_optimized_.

◆ message_type()

messaging_container_builder & kcenon::container::integration::messaging_container_builder::message_type ( const std::string & type)

Definition at line 194 of file messaging_integration.cpp.

194 {
195 container_->set_message_type(type);
196 return *this;
197}

References container_.

◆ optimize_for_size()

messaging_container_builder & kcenon::container::integration::messaging_container_builder::optimize_for_size ( )

Definition at line 199 of file messaging_integration.cpp.

199 {
200 size_optimized_ = true;
201 speed_optimized_ = false;
202 return *this;
203}

References size_optimized_, and speed_optimized_.

◆ optimize_for_speed()

messaging_container_builder & kcenon::container::integration::messaging_container_builder::optimize_for_speed ( )

Definition at line 205 of file messaging_integration.cpp.

205 {
206 speed_optimized_ = true;
207 size_optimized_ = false;
208 return *this;
209}

References size_optimized_, and speed_optimized_.

◆ set()

template<typename T >
messaging_container_builder & kcenon::container::integration::messaging_container_builder::set ( const std::string & key,
T && value )

Set a value by key (unified API)

Parameters
keyThe value key/name
valueThe value to store
Returns
Reference to this builder for method chaining

Definition at line 150 of file messaging_integration.h.

150 {
151 using DecayedT = std::decay_t<T>;
152
153 if constexpr (std::is_same_v<DecayedT, std::shared_ptr<value_container>>) {
154 // Handle nested containers by serializing and storing as bytes
155 auto result = value->serialize_string(value_container::serialization_format::binary);
156 if (result.is_ok()) {
157 std::string serialized_data = result.value();
158 std::vector<uint8_t> bytes(serialized_data.begin(), serialized_data.end());
159 container_->set(key, bytes);
160 }
161 } else if constexpr (std::is_same_v<DecayedT, bool>) {
162 container_->set(key, value);
163 } else if constexpr (concepts::IntegralType<DecayedT>) {
164 if constexpr (sizeof(DecayedT) <= 4) {
165 container_->set(key, static_cast<int32_t>(value));
166 } else {
167 container_->set(key, static_cast<int64_t>(value));
168 }
169 } else if constexpr (concepts::FloatingPointType<DecayedT>) {
170 if constexpr (std::is_same_v<DecayedT, float>) {
171 container_->set(key, value);
172 } else {
173 container_->set(key, value);
174 }
175 } else if constexpr (std::is_same_v<DecayedT, std::string>) {
176 container_->set(key, std::string(value));
177 } else if constexpr (concepts::StringLike<DecayedT>) {
178 container_->set(key, std::string(value));
179 }
180
181 return *this;
182}

References container_.

◆ source()

messaging_container_builder & kcenon::container::integration::messaging_container_builder::source ( const std::string & id,
const std::string & sub_id = "" )

Definition at line 182 of file messaging_integration.cpp.

183 {
184 container_->set_source(id, sub_id);
185 return *this;
186}

References container_.

◆ target()

messaging_container_builder & kcenon::container::integration::messaging_container_builder::target ( const std::string & id,
const std::string & sub_id = "" )

Definition at line 188 of file messaging_integration.cpp.

189 {
190 container_->set_target(id, sub_id);
191 return *this;
192}

References container_.

Member Data Documentation

◆ container_

std::shared_ptr<value_container> kcenon::container::integration::messaging_container_builder::container_
private

Definition at line 122 of file messaging_integration.h.

Referenced by build(), message_type(), set(), source(), and target().

◆ size_optimized_

bool kcenon::container::integration::messaging_container_builder::size_optimized_ = false
private

Definition at line 123 of file messaging_integration.h.

Referenced by build(), optimize_for_size(), and optimize_for_speed().

◆ speed_optimized_

bool kcenon::container::integration::messaging_container_builder::speed_optimized_ = false
private

Definition at line 124 of file messaging_integration.h.

Referenced by build(), optimize_for_size(), and optimize_for_speed().


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