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_integration Class Reference

Container integration manager for messaging systems. More...

#include <messaging_integration.h>

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

Classes

struct  metrics
 Performance metrics collection. More...
 

Public Types

using container_callback_t = std::function<void(const std::shared_ptr<value_container>&)>
 External system callback registration.
 

Static Public Member Functions

static std::shared_ptr< value_container > create_optimized_container (const std::string &message_type="data_container")
 Container creation with messaging optimization.
 
static std::string serialize_for_messaging (const std::shared_ptr< value_container > &container, bool compress=false)
 High-performance serialization for messaging.
 
static std::shared_ptr< value_container > deserialize_from_messaging (const std::string &data, bool decompress=false)
 Optimized deserialization for messaging.
 
static metricsget_metrics ()
 
static void reset_metrics ()
 
static std::string get_metrics_summary ()
 
static void register_creation_callback (container_callback_t callback)
 
static void register_serialization_callback (container_callback_t callback)
 
static void unregister_callbacks ()
 

Static Private Attributes

static metrics metrics_
 
static std::vector< container_callback_tcreation_callbacks_
 
static std::vector< container_callback_tserialization_callbacks_
 
static std::mutex callback_mutex_
 

Detailed Description

Container integration manager for messaging systems.

Provides enhanced functionality for container operations in messaging environments, including performance monitoring, optimization hints, and external system integration.

Definition at line 31 of file messaging_integration.h.

Member Typedef Documentation

◆ container_callback_t

using kcenon::container::integration::messaging_integration::container_callback_t = std::function<void(const std::shared_ptr<value_container>&)>

External system callback registration.

Definition at line 77 of file messaging_integration.h.

Member Function Documentation

◆ create_optimized_container()

std::shared_ptr< value_container > kcenon::container::integration::messaging_integration::create_optimized_container ( const std::string & message_type = "data_container")
static

Container creation with messaging optimization.

Definition at line 21 of file messaging_integration.cpp.

22 {
23
24 auto container = std::make_shared<value_container>();
25 container->set_message_type(message_type);
26
27#ifdef HAS_PERFORMANCE_METRICS
28 metrics_.containers_created.fetch_add(1, std::memory_order_relaxed);
29#endif
30
31#ifdef HAS_EXTERNAL_INTEGRATION
32 {
33 std::lock_guard<std::mutex> lock(callback_mutex_);
34 for (const auto& callback : creation_callbacks_) {
35 if (callback) {
36 callback(container);
37 }
38 }
39 }
40#endif
41
42 return container;
43}
static std::vector< container_callback_t > creation_callbacks_

References callback_mutex_, kcenon::container::integration::messaging_integration::metrics::containers_created, creation_callbacks_, and metrics_.

◆ deserialize_from_messaging()

std::shared_ptr< value_container > kcenon::container::integration::messaging_integration::deserialize_from_messaging ( const std::string & data,
bool decompress = false )
static

Optimized deserialization for messaging.

Definition at line 86 of file messaging_integration.cpp.

88 {
89
90 if (data.empty()) {
91 return nullptr;
92 }
93
94#ifdef HAS_PERFORMANCE_METRICS
95 auto start = std::chrono::high_resolution_clock::now();
96#endif
97
98 std::string processed_data = data;
99
100 // TODO: Add decompression support when ENABLE_COMPRESSION is available
101 if (decompress) {
102 // Placeholder for decompression implementation
103 }
104
105 auto container = std::make_shared<value_container>(processed_data, false);
106
107#ifdef HAS_PERFORMANCE_METRICS
108 auto end = std::chrono::high_resolution_clock::now();
109 auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
110 metrics_.deserializations_performed.fetch_add(1, std::memory_order_relaxed);
111 metrics_.total_deserialize_time_us.fetch_add(duration.count(), std::memory_order_relaxed);
112#endif
113
114 return container;
115}

References kcenon::container::integration::messaging_integration::metrics::deserializations_performed, metrics_, and kcenon::container::integration::messaging_integration::metrics::total_deserialize_time_us.

◆ get_metrics()

messaging_integration::metrics & kcenon::container::integration::messaging_integration::get_metrics ( )
static

Definition at line 118 of file messaging_integration.cpp.

118 {
119 return metrics_;
120}

References metrics_.

◆ get_metrics_summary()

std::string kcenon::container::integration::messaging_integration::get_metrics_summary ( )
static

Definition at line 130 of file messaging_integration.cpp.

130 {
131 std::ostringstream oss;
132
133 auto containers = metrics_.containers_created.load(std::memory_order_relaxed);
134 auto serializations = metrics_.serializations_performed.load(std::memory_order_relaxed);
135 auto deserializations = metrics_.deserializations_performed.load(std::memory_order_relaxed);
136 auto serialize_time = metrics_.total_serialize_time_us.load(std::memory_order_relaxed);
137 auto deserialize_time = metrics_.total_deserialize_time_us.load(std::memory_order_relaxed);
138
139 oss << "Container System Metrics:\n";
140 oss << " Containers created: " << containers << "\n";
141 oss << " Serializations: " << serializations << "\n";
142 oss << " Deserializations: " << deserializations << "\n";
143
144 if (serializations > 0) {
145 oss << " Avg serialize time: " << std::fixed << std::setprecision(2)
146 << (static_cast<double>(serialize_time) / serializations) << " μs\n";
147 }
148
149 if (deserializations > 0) {
150 oss << " Avg deserialize time: " << std::fixed << std::setprecision(2)
151 << (static_cast<double>(deserialize_time) / deserializations) << " μs\n";
152 }
153
154 return oss.str();
155}

References kcenon::container::integration::messaging_integration::metrics::containers_created, kcenon::container::integration::messaging_integration::metrics::deserializations_performed, metrics_, kcenon::container::integration::messaging_integration::metrics::serializations_performed, kcenon::container::integration::messaging_integration::metrics::total_deserialize_time_us, and kcenon::container::integration::messaging_integration::metrics::total_serialize_time_us.

◆ register_creation_callback()

void kcenon::container::integration::messaging_integration::register_creation_callback ( container_callback_t callback)
static

Definition at line 159 of file messaging_integration.cpp.

159 {
160 std::lock_guard<std::mutex> lock(callback_mutex_);
161 creation_callbacks_.push_back(std::move(callback));
162}

References callback_mutex_, and creation_callbacks_.

◆ register_serialization_callback()

void kcenon::container::integration::messaging_integration::register_serialization_callback ( container_callback_t callback)
static

Definition at line 164 of file messaging_integration.cpp.

164 {
165 std::lock_guard<std::mutex> lock(callback_mutex_);
166 serialization_callbacks_.push_back(std::move(callback));
167}
static std::vector< container_callback_t > serialization_callbacks_

References callback_mutex_, and serialization_callbacks_.

◆ reset_metrics()

◆ serialize_for_messaging()

std::string kcenon::container::integration::messaging_integration::serialize_for_messaging ( const std::shared_ptr< value_container > & container,
bool compress = false )
static

High-performance serialization for messaging.

Definition at line 45 of file messaging_integration.cpp.

47 {
48
49 if (!container) {
50 return {};
51 }
52
53#ifdef HAS_PERFORMANCE_METRICS
54 auto start = std::chrono::high_resolution_clock::now();
55#endif
56
57 auto serialize_result = container->serialize_string(value_container::serialization_format::binary);
58 std::string result = serialize_result.is_ok() ? serialize_result.value() : "";
59
60 // TODO: Add compression support when ENABLE_COMPRESSION is available
61 if (compress) {
62 // Placeholder for compression implementation
63 }
64
65#ifdef HAS_PERFORMANCE_METRICS
66 auto end = std::chrono::high_resolution_clock::now();
67 auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
68 metrics_.serializations_performed.fetch_add(1, std::memory_order_relaxed);
69 metrics_.total_serialize_time_us.fetch_add(duration.count(), std::memory_order_relaxed);
70#endif
71
72#ifdef HAS_EXTERNAL_INTEGRATION
73 {
74 std::lock_guard<std::mutex> lock(callback_mutex_);
75 for (const auto& callback : serialization_callbacks_) {
76 if (callback) {
77 callback(container);
78 }
79 }
80 }
81#endif
82
83 return result;
84}

References callback_mutex_, metrics_, serialization_callbacks_, kcenon::container::integration::messaging_integration::metrics::serializations_performed, and kcenon::container::integration::messaging_integration::metrics::total_serialize_time_us.

◆ unregister_callbacks()

void kcenon::container::integration::messaging_integration::unregister_callbacks ( )
static

Definition at line 169 of file messaging_integration.cpp.

169 {
170 std::lock_guard<std::mutex> lock(callback_mutex_);
171 creation_callbacks_.clear();
173}

References callback_mutex_, creation_callbacks_, and serialization_callbacks_.

Member Data Documentation

◆ callback_mutex_

std::mutex kcenon::container::integration::messaging_integration::callback_mutex_
staticprivate

◆ creation_callbacks_

std::vector< messaging_integration::container_callback_t > kcenon::container::integration::messaging_integration::creation_callbacks_
staticprivate

◆ metrics_

messaging_integration::metrics kcenon::container::integration::messaging_integration::metrics_
staticprivate

◆ serialization_callbacks_

std::vector< messaging_integration::container_callback_t > kcenon::container::integration::messaging_integration::serialization_callbacks_
staticprivate

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