8#define CONTAINER_INTERNAL_INCLUDE
10#undef CONTAINER_INTERNAL_INCLUDE
16#ifdef HAS_PERFORMANCE_METRICS
20#include <unordered_map>
37 const std::string& message_type =
"data_container"
44 const std::shared_ptr<value_container>& container,
52 const std::string& data,
53 bool decompress =
false
56#ifdef HAS_PERFORMANCE_METRICS
73#ifdef HAS_EXTERNAL_INTEGRATION
85#ifdef HAS_PERFORMANCE_METRICS
89#ifdef HAS_EXTERNAL_INTEGRATION
119 std::shared_ptr<value_container>
build();
127#ifdef HAS_PERFORMANCE_METRICS
151 using DecayedT = std::decay_t<T>;
153 if constexpr (std::is_same_v<DecayedT, std::shared_ptr<value_container>>) {
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());
161 }
else if constexpr (std::is_same_v<DecayedT, bool>) {
163 }
else if constexpr (concepts::IntegralType<DecayedT>) {
164 if constexpr (
sizeof(DecayedT) <= 4) {
169 }
else if constexpr (concepts::FloatingPointType<DecayedT>) {
170 if constexpr (std::is_same_v<DecayedT, float>) {
175 }
else if constexpr (std::is_same_v<DecayedT, std::string>) {
177 }
else if constexpr (concepts::StringLike<DecayedT>) {
187#ifdef HAS_PERFORMANCE_METRICS
188#define CONTAINER_PERF_MONITOR(name) \
189 kcenon::container::integration::container_performance_monitor _monitor(name)
191#define CONTAINER_PERF_SET_SIZE(size) \
192 _monitor.set_container_size(size)
194#define CONTAINER_PERF_SET_RESULT(size) \
195 _monitor.set_result_size(size)
197#define CONTAINER_PERF_MONITOR(name)
198#define CONTAINER_PERF_SET_SIZE(size)
199#define CONTAINER_PERF_SET_RESULT(size)
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()
messaging_container_builder & set(const std::string &key, T &&value)
Set a value by key (unified API)
Container integration manager for messaging systems.
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_
Enhanced type-safe value with perfect legacy compatibility.
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