Lines
100 %
Functions
#include "source/extensions/compression/gzip/compressor/config.h"
namespace Envoy {
namespace Extensions {
namespace Compression {
namespace Gzip {
namespace Compressor {
GzipCompressorFactory::GzipCompressorFactory(
const envoy::extensions::compression::gzip::compressor::v3::Gzip& gzip)
: compression_level_(compressionLevelEnum(gzip.compression_level())),
compression_strategy_(compressionStrategyEnum(gzip.compression_strategy())),
memory_level_(PROTOBUF_GET_WRAPPED_OR_DEFAULT(gzip, memory_level, DefaultMemoryLevel)),
window_bits_(PROTOBUF_GET_WRAPPED_OR_DEFAULT(gzip, window_bits, DefaultWindowBits) |
GzipHeaderValue),
chunk_size_(PROTOBUF_GET_WRAPPED_OR_DEFAULT(gzip, chunk_size, DefaultChunkSize)) {}
ZlibCompressorImpl::CompressionLevel GzipCompressorFactory::compressionLevelEnum(
envoy::extensions::compression::gzip::compressor::v3::Gzip::CompressionLevel
compression_level) {
switch (compression_level) {
case envoy::extensions::compression::gzip::compressor::v3::Gzip::BEST_SPEED:
return ZlibCompressorImpl::CompressionLevel::Speed;
case envoy::extensions::compression::gzip::compressor::v3::Gzip::COMPRESSION_LEVEL_2:
return ZlibCompressorImpl::CompressionLevel::Level2;
case envoy::extensions::compression::gzip::compressor::v3::Gzip::COMPRESSION_LEVEL_3:
return ZlibCompressorImpl::CompressionLevel::Level3;
case envoy::extensions::compression::gzip::compressor::v3::Gzip::COMPRESSION_LEVEL_4:
return ZlibCompressorImpl::CompressionLevel::Level4;
case envoy::extensions::compression::gzip::compressor::v3::Gzip::COMPRESSION_LEVEL_5:
return ZlibCompressorImpl::CompressionLevel::Level5;
case envoy::extensions::compression::gzip::compressor::v3::Gzip::COMPRESSION_LEVEL_6:
return ZlibCompressorImpl::CompressionLevel::Level6;
case envoy::extensions::compression::gzip::compressor::v3::Gzip::COMPRESSION_LEVEL_7:
return ZlibCompressorImpl::CompressionLevel::Level7;
case envoy::extensions::compression::gzip::compressor::v3::Gzip::COMPRESSION_LEVEL_8:
return ZlibCompressorImpl::CompressionLevel::Level8;
case envoy::extensions::compression::gzip::compressor::v3::Gzip::BEST_COMPRESSION:
return ZlibCompressorImpl::CompressionLevel::Best;
default:
return ZlibCompressorImpl::CompressionLevel::Standard;
}
ZlibCompressorImpl::CompressionStrategy GzipCompressorFactory::compressionStrategyEnum(
envoy::extensions::compression::gzip::compressor::v3::Gzip::CompressionStrategy
compression_strategy) {
switch (compression_strategy) {
case envoy::extensions::compression::gzip::compressor::v3::Gzip::FILTERED:
return ZlibCompressorImpl::CompressionStrategy::Filtered;
case envoy::extensions::compression::gzip::compressor::v3::Gzip::FIXED:
return ZlibCompressorImpl::CompressionStrategy::Fixed;
case envoy::extensions::compression::gzip::compressor::v3::Gzip::HUFFMAN_ONLY:
return ZlibCompressorImpl::CompressionStrategy::Huffman;
case envoy::extensions::compression::gzip::compressor::v3::Gzip::RLE:
return ZlibCompressorImpl::CompressionStrategy::Rle;
return ZlibCompressorImpl::CompressionStrategy::Standard;
Envoy::Compression::Compressor::CompressorPtr GzipCompressorFactory::createCompressor() {
auto compressor = std::make_unique<ZlibCompressorImpl>(chunk_size_);
compressor->init(compression_level_, compression_strategy_, window_bits_, memory_level_);
return compressor;
Envoy::Compression::Compressor::CompressorFactoryPtr
GzipCompressorLibraryFactory::createCompressorFactoryFromProtoTyped(
const envoy::extensions::compression::gzip::compressor::v3::Gzip& proto_config,
Server::Configuration::GenericFactoryContext&) {
return std::make_unique<GzipCompressorFactory>(proto_config);
/**
* Static registration for the gzip compressor library. @see NamedCompressorLibraryConfigFactory.
*/
REGISTER_FACTORY(GzipCompressorLibraryFactory,
Envoy::Compression::Compressor::NamedCompressorLibraryConfigFactory);
} // namespace Compressor
} // namespace Gzip
} // namespace Compression
} // namespace Extensions
} // namespace Envoy