Line data Source code
1 : #include "source/extensions/compression/gzip/compressor/config.h" 2 : 3 : namespace Envoy { 4 : namespace Extensions { 5 : namespace Compression { 6 : namespace Gzip { 7 : namespace Compressor { 8 : 9 : GzipCompressorFactory::GzipCompressorFactory( 10 : const envoy::extensions::compression::gzip::compressor::v3::Gzip& gzip) 11 : : compression_level_(compressionLevelEnum(gzip.compression_level())), 12 : compression_strategy_(compressionStrategyEnum(gzip.compression_strategy())), 13 : memory_level_(PROTOBUF_GET_WRAPPED_OR_DEFAULT(gzip, memory_level, DefaultMemoryLevel)), 14 : window_bits_(PROTOBUF_GET_WRAPPED_OR_DEFAULT(gzip, window_bits, DefaultWindowBits) | 15 : GzipHeaderValue), 16 0 : chunk_size_(PROTOBUF_GET_WRAPPED_OR_DEFAULT(gzip, chunk_size, DefaultChunkSize)) {} 17 : 18 : ZlibCompressorImpl::CompressionLevel GzipCompressorFactory::compressionLevelEnum( 19 : envoy::extensions::compression::gzip::compressor::v3::Gzip::CompressionLevel 20 0 : compression_level) { 21 0 : switch (compression_level) { 22 0 : case envoy::extensions::compression::gzip::compressor::v3::Gzip::BEST_SPEED: 23 0 : return ZlibCompressorImpl::CompressionLevel::Speed; 24 0 : case envoy::extensions::compression::gzip::compressor::v3::Gzip::COMPRESSION_LEVEL_2: 25 0 : return ZlibCompressorImpl::CompressionLevel::Level2; 26 0 : case envoy::extensions::compression::gzip::compressor::v3::Gzip::COMPRESSION_LEVEL_3: 27 0 : return ZlibCompressorImpl::CompressionLevel::Level3; 28 0 : case envoy::extensions::compression::gzip::compressor::v3::Gzip::COMPRESSION_LEVEL_4: 29 0 : return ZlibCompressorImpl::CompressionLevel::Level4; 30 0 : case envoy::extensions::compression::gzip::compressor::v3::Gzip::COMPRESSION_LEVEL_5: 31 0 : return ZlibCompressorImpl::CompressionLevel::Level5; 32 0 : case envoy::extensions::compression::gzip::compressor::v3::Gzip::COMPRESSION_LEVEL_6: 33 0 : return ZlibCompressorImpl::CompressionLevel::Level6; 34 0 : case envoy::extensions::compression::gzip::compressor::v3::Gzip::COMPRESSION_LEVEL_7: 35 0 : return ZlibCompressorImpl::CompressionLevel::Level7; 36 0 : case envoy::extensions::compression::gzip::compressor::v3::Gzip::COMPRESSION_LEVEL_8: 37 0 : return ZlibCompressorImpl::CompressionLevel::Level8; 38 0 : case envoy::extensions::compression::gzip::compressor::v3::Gzip::BEST_COMPRESSION: 39 0 : return ZlibCompressorImpl::CompressionLevel::Best; 40 0 : default: 41 0 : return ZlibCompressorImpl::CompressionLevel::Standard; 42 0 : } 43 0 : } 44 : 45 : ZlibCompressorImpl::CompressionStrategy GzipCompressorFactory::compressionStrategyEnum( 46 : envoy::extensions::compression::gzip::compressor::v3::Gzip::CompressionStrategy 47 0 : compression_strategy) { 48 0 : switch (compression_strategy) { 49 0 : case envoy::extensions::compression::gzip::compressor::v3::Gzip::FILTERED: 50 0 : return ZlibCompressorImpl::CompressionStrategy::Filtered; 51 0 : case envoy::extensions::compression::gzip::compressor::v3::Gzip::FIXED: 52 0 : return ZlibCompressorImpl::CompressionStrategy::Fixed; 53 0 : case envoy::extensions::compression::gzip::compressor::v3::Gzip::HUFFMAN_ONLY: 54 0 : return ZlibCompressorImpl::CompressionStrategy::Huffman; 55 0 : case envoy::extensions::compression::gzip::compressor::v3::Gzip::RLE: 56 0 : return ZlibCompressorImpl::CompressionStrategy::Rle; 57 0 : default: 58 0 : return ZlibCompressorImpl::CompressionStrategy::Standard; 59 0 : } 60 0 : } 61 : 62 0 : Envoy::Compression::Compressor::CompressorPtr GzipCompressorFactory::createCompressor() { 63 0 : auto compressor = std::make_unique<ZlibCompressorImpl>(chunk_size_); 64 0 : compressor->init(compression_level_, compression_strategy_, window_bits_, memory_level_); 65 0 : return compressor; 66 0 : } 67 : 68 : Envoy::Compression::Compressor::CompressorFactoryPtr 69 : GzipCompressorLibraryFactory::createCompressorFactoryFromProtoTyped( 70 : const envoy::extensions::compression::gzip::compressor::v3::Gzip& proto_config, 71 0 : Server::Configuration::FactoryContext&) { 72 0 : return std::make_unique<GzipCompressorFactory>(proto_config); 73 0 : } 74 : 75 : /** 76 : * Static registration for the gzip compressor library. @see NamedCompressorLibraryConfigFactory. 77 : */ 78 : REGISTER_FACTORY(GzipCompressorLibraryFactory, 79 : Envoy::Compression::Compressor::NamedCompressorLibraryConfigFactory); 80 : 81 : } // namespace Compressor 82 : } // namespace Gzip 83 : } // namespace Compression 84 : } // namespace Extensions 85 : } // namespace Envoy