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

Public Member Functions

 impl (compression_algorithm algo, size_t threshold)
 
auto compress (std::span< const uint8_t > input) -> Result< std::vector< uint8_t > >
 
auto decompress (std::span< const uint8_t > input) -> Result< std::vector< uint8_t > >
 
auto set_compression_threshold (size_t bytes) -> void
 
auto get_compression_threshold () const -> size_t
 
auto get_algorithm () const -> compression_algorithm
 

Private Attributes

compression_algorithm algorithm_
 
size_t compression_threshold_
 

Detailed Description

Definition at line 22 of file compression_pipeline.cpp.

Constructor & Destructor Documentation

◆ impl()

kcenon::network::utils::compression_pipeline::impl::impl ( compression_algorithm algo,
size_t threshold )
inlineexplicit

Definition at line 25 of file compression_pipeline.cpp.

26 : algorithm_(algo), compression_threshold_(threshold)
27 {
28 NETWORK_LOG_DEBUG("[compression_pipeline] Created with algorithm=" +
29 std::to_string(static_cast<int>(algo)) +
30 ", threshold=" + std::to_string(threshold));
31 }
#define NETWORK_LOG_DEBUG(msg)

References NETWORK_LOG_DEBUG.

Member Function Documentation

◆ compress()

auto kcenon::network::utils::compression_pipeline::impl::compress ( std::span< const uint8_t > input) -> Result<std::vector<uint8_t>>
inline

Definition at line 33 of file compression_pipeline.cpp.

34 {
35 // If below threshold, return uncompressed
36 if (input.size() < compression_threshold_)
37 {
38 NETWORK_LOG_TRACE("[compression_pipeline] Size below threshold, skipping compression");
39 std::vector<uint8_t> result(input.begin(), input.end());
40 return ok<std::vector<uint8_t>>(std::move(result));
41 }
42
44 {
45 std::vector<uint8_t> result(input.begin(), input.end());
46 return ok<std::vector<uint8_t>>(std::move(result));
47 }
48
49#ifdef BUILD_LZ4_COMPRESSION
51 {
52 return compress_lz4(input);
53 }
54#endif
55
56#ifdef BUILD_ZLIB_COMPRESSION
58 {
59 return compress_gzip(input);
60 }
62 {
63 return compress_deflate(input);
64 }
65#endif
66
67 // Fallback: return uncompressed if algorithm not available
68 NETWORK_LOG_WARN("[compression_pipeline] Compression algorithm not available, returning uncompressed");
69 std::vector<uint8_t> result(input.begin(), input.end());
70 return ok<std::vector<uint8_t>>(std::move(result));
71 }
#define NETWORK_LOG_TRACE(msg)
#define NETWORK_LOG_WARN(msg)

References algorithm_, compression_threshold_, kcenon::network::utils::deflate, kcenon::network::utils::gzip, kcenon::network::utils::lz4, NETWORK_LOG_TRACE, NETWORK_LOG_WARN, and kcenon::network::utils::none.

◆ decompress()

auto kcenon::network::utils::compression_pipeline::impl::decompress ( std::span< const uint8_t > input) -> Result<std::vector<uint8_t>>
inline

Definition at line 73 of file compression_pipeline.cpp.

74 {
75 if (input.empty())
76 {
79 "Input data is empty");
80 }
81
83 {
84 std::vector<uint8_t> result(input.begin(), input.end());
85 return ok<std::vector<uint8_t>>(std::move(result));
86 }
87
88#ifdef BUILD_LZ4_COMPRESSION
90 {
91 return decompress_lz4(input);
92 }
93#endif
94
95#ifdef BUILD_ZLIB_COMPRESSION
97 {
98 return decompress_gzip(input);
99 }
101 {
102 return decompress_deflate(input);
103 }
104#endif
105
106 // Fallback: assume uncompressed
107 NETWORK_LOG_WARN("[compression_pipeline] Decompression algorithm not available, returning as-is");
108 std::vector<uint8_t> result(input.begin(), input.end());
109 return ok<std::vector<uint8_t>>(std::move(result));
110 }

References algorithm_, kcenon::network::utils::deflate, kcenon::network::error, kcenon::network::utils::gzip, kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::utils::lz4, NETWORK_LOG_WARN, and kcenon::network::utils::none.

◆ get_algorithm()

auto kcenon::network::utils::compression_pipeline::impl::get_algorithm ( ) const -> compression_algorithm
inline

Definition at line 120 of file compression_pipeline.cpp.

120{ return algorithm_; }

References algorithm_.

Referenced by kcenon::network::utils::compression_pipeline::get_algorithm().

Here is the caller graph for this function:

◆ get_compression_threshold()

auto kcenon::network::utils::compression_pipeline::impl::get_compression_threshold ( ) const -> size_t
inline

Definition at line 118 of file compression_pipeline.cpp.

118{ return compression_threshold_; }

References compression_threshold_.

Referenced by kcenon::network::utils::compression_pipeline::get_compression_threshold().

Here is the caller graph for this function:

◆ set_compression_threshold()

auto kcenon::network::utils::compression_pipeline::impl::set_compression_threshold ( size_t bytes) -> void
inline

Definition at line 112 of file compression_pipeline.cpp.

113 {
115 NETWORK_LOG_DEBUG("[compression_pipeline] Set threshold=" + std::to_string(bytes));
116 }

References compression_threshold_, and NETWORK_LOG_DEBUG.

Member Data Documentation

◆ algorithm_

compression_algorithm kcenon::network::utils::compression_pipeline::impl::algorithm_
private

Definition at line 444 of file compression_pipeline.cpp.

Referenced by compress(), decompress(), and get_algorithm().

◆ compression_threshold_

size_t kcenon::network::utils::compression_pipeline::impl::compression_threshold_
private

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