11#ifdef HAS_PERFORMANCE_METRICS
15#ifdef HAS_EXTERNAL_INTEGRATION
22 const std::string& message_type) {
24 auto container = std::make_shared<value_container>();
25 container->set_message_type(message_type);
27#ifdef HAS_PERFORMANCE_METRICS
31#ifdef HAS_EXTERNAL_INTEGRATION
46 const std::shared_ptr<value_container>& container,
53#ifdef HAS_PERFORMANCE_METRICS
54 auto start = std::chrono::high_resolution_clock::now();
57 auto serialize_result = container->serialize_string(value_container::serialization_format::binary);
58 std::string result = serialize_result.is_ok() ? serialize_result.value() :
"";
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);
72#ifdef HAS_EXTERNAL_INTEGRATION
87 const std::string& data,
94#ifdef HAS_PERFORMANCE_METRICS
95 auto start = std::chrono::high_resolution_clock::now();
98 std::string processed_data = data;
105 auto container = std::make_shared<value_container>(processed_data,
false);
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);
117#ifdef HAS_PERFORMANCE_METRICS
131 std::ostringstream oss;
139 oss <<
"Container System Metrics:\n";
140 oss <<
" Containers created: " << containers <<
"\n";
141 oss <<
" Serializations: " << serializations <<
"\n";
142 oss <<
" Deserializations: " << deserializations <<
"\n";
144 if (serializations > 0) {
145 oss <<
" Avg serialize time: " << std::fixed << std::setprecision(2)
146 << (
static_cast<double>(serialize_time) / serializations) <<
" Ξs\n";
149 if (deserializations > 0) {
150 oss <<
" Avg deserialize time: " << std::fixed << std::setprecision(2)
151 << (
static_cast<double>(deserialize_time) / deserializations) <<
" Ξs\n";
158#ifdef HAS_EXTERNAL_INTEGRATION
179 : container_(std::make_shared<value_container>()) {
183 const std::string&
id,
const std::string& sub_id) {
189 const std::string&
id,
const std::string& sub_id) {
220 container_ = std::make_shared<value_container>();
224#ifdef HAS_PERFORMANCE_METRICS
228 : operation_name_(operation_name)
229 , start_time_(std::chrono::high_resolution_clock::now()) {
233 auto end_time = std::chrono::high_resolution_clock::now();
234 auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end_time -
start_time_);
Builder pattern for messaging containers.
messaging_container_builder & source(const std::string &id, const std::string &sub_id="")
messaging_container_builder & optimize_for_speed()
std::shared_ptr< value_container > container_
messaging_container_builder & target(const std::string &id, const std::string &sub_id="")
messaging_container_builder & message_type(const std::string &type)
messaging_container_builder & optimize_for_size()
messaging_container_builder()
std::shared_ptr< value_container > build()
static void unregister_callbacks()
static void register_serialization_callback(container_callback_t callback)
static std::string get_metrics_summary()
static metrics & get_metrics()
static std::shared_ptr< value_container > create_optimized_container(const std::string &message_type="data_container")
Container creation with messaging optimization.
static std::shared_ptr< value_container > deserialize_from_messaging(const std::string &data, bool decompress=false)
Optimized deserialization for messaging.
static std::vector< container_callback_t > serialization_callbacks_
static void register_creation_callback(container_callback_t callback)
static std::vector< container_callback_t > creation_callbacks_
static std::string serialize_for_messaging(const std::shared_ptr< value_container > &container, bool compress=false)
High-performance serialization for messaging.
std::function< void(const std::shared_ptr< value_container > &)> container_callback_t
External system callback registration.
static void reset_metrics()
static std::mutex callback_mutex_
Performance metrics collection.
std::atomic< uint64_t > total_serialize_time_us
std::atomic< uint64_t > containers_created
std::atomic< uint64_t > serializations_performed
std::atomic< uint64_t > deserializations_performed
std::atomic< uint64_t > total_deserialize_time_us