Network System 0.1.1
High-performance modular networking library for scalable client-server applications
Loading...
Searching...
No Matches
kcenon::network::integration::basic_container::impl Class Reference
Collaboration diagram for kcenon::network::integration::basic_container::impl:
Collaboration graph

Public Member Functions

 impl ()=default
 
std::vector< uint8_t > serialize (const std::any &data) const
 
std::any deserialize (const std::vector< uint8_t > &bytes) const
 
void set_serializer (std::function< std::vector< uint8_t >(const std::any &)> serializer)
 
void set_deserializer (std::function< std::any(const std::vector< uint8_t > &)> deserializer)
 

Private Attributes

std::function< std::vector< uint8_t >(const std::any &)> custom_serializer_
 
std::function< std::any(const std::vector< uint8_t > &)> custom_deserializer_
 

Detailed Description

Definition at line 77 of file container_integration.cpp.

Constructor & Destructor Documentation

◆ impl()

kcenon::network::integration::basic_container::impl::impl ( )
default

Member Function Documentation

◆ deserialize()

std::any kcenon::network::integration::basic_container::impl::deserialize ( const std::vector< uint8_t > & bytes) const
inline

Definition at line 112 of file container_integration.cpp.

112 {
114 return custom_deserializer_(bytes);
115 }
116
117 // Default deserialization - assume string for simplicity
118 if (!bytes.empty()) {
119 return std::any(std::string(bytes.begin(), bytes.end()));
120 }
121
122 return std::any{};
123 }
std::function< std::any(const std::vector< uint8_t > &)> custom_deserializer_

Referenced by kcenon::network::integration::basic_container::deserialize().

Here is the caller graph for this function:

◆ serialize()

std::vector< uint8_t > kcenon::network::integration::basic_container::impl::serialize ( const std::any & data) const
inline

Definition at line 81 of file container_integration.cpp.

81 {
83 return custom_serializer_(data);
84 }
85
86 // Default serialization for common types
87 try {
88 if (data.type() == typeid(std::string)) {
89 auto str = std::any_cast<std::string>(data);
90 return std::vector<uint8_t>(str.begin(), str.end());
91 } else if (data.type() == typeid(int)) {
92 auto val = std::any_cast<int>(data);
93 std::vector<uint8_t> bytes(sizeof(int));
94 std::memcpy(bytes.data(), &val, sizeof(int));
95 return bytes;
96 } else if (data.type() == typeid(double)) {
97 auto val = std::any_cast<double>(data);
98 std::vector<uint8_t> bytes(sizeof(double));
99 std::memcpy(bytes.data(), &val, sizeof(double));
100 return bytes;
101 } else if (data.type() == typeid(bool)) {
102 auto val = std::any_cast<bool>(data);
103 return {static_cast<uint8_t>(val ? 1 : 0)};
104 }
105 } catch (const std::bad_any_cast&) {
106 // Return empty vector on error
107 }
108
109 return {};
110 }
std::function< std::vector< uint8_t >(const std::any &)> custom_serializer_

Referenced by kcenon::network::integration::basic_container::serialize().

Here is the caller graph for this function:

◆ set_deserializer()

void kcenon::network::integration::basic_container::impl::set_deserializer ( std::function< std::any(const std::vector< uint8_t > &)> deserializer)
inline

Definition at line 131 of file container_integration.cpp.

133 {
134 custom_deserializer_ = deserializer;
135 }

Referenced by kcenon::network::integration::basic_container::set_deserializer().

Here is the caller graph for this function:

◆ set_serializer()

void kcenon::network::integration::basic_container::impl::set_serializer ( std::function< std::vector< uint8_t >(const std::any &)> serializer)
inline

Definition at line 125 of file container_integration.cpp.

127 {
128 custom_serializer_ = serializer;
129 }

Referenced by kcenon::network::integration::basic_container::set_serializer().

Here is the caller graph for this function:

Member Data Documentation

◆ custom_deserializer_

std::function<std::any(const std::vector<uint8_t>&)> kcenon::network::integration::basic_container::impl::custom_deserializer_
private

Definition at line 139 of file container_integration.cpp.

◆ custom_serializer_

std::function<std::vector<uint8_t>(const std::any&)> kcenon::network::integration::basic_container::impl::custom_serializer_
private

Definition at line 138 of file container_integration.cpp.


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