LCOV - code coverage report
Current view: top level - source/extensions/compression/brotli/compressor - config.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 4 9 44.4 %
Date: 2024-01-05 06:35:25 Functions: 2 5 40.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include "envoy/compression/compressor/factory.h"
       4             : #include "envoy/extensions/compression/brotli/compressor/v3/brotli.pb.h"
       5             : #include "envoy/extensions/compression/brotli/compressor/v3/brotli.pb.validate.h"
       6             : 
       7             : #include "source/common/http/headers.h"
       8             : #include "source/extensions/compression/brotli/compressor/brotli_compressor_impl.h"
       9             : #include "source/extensions/compression/common/compressor/factory_base.h"
      10             : 
      11             : namespace Envoy {
      12             : namespace Extensions {
      13             : namespace Compression {
      14             : namespace Brotli {
      15             : namespace Compressor {
      16             : 
      17             : // Default input block size.
      18             : const uint32_t DefaultInputBlockBits = 24;
      19             : 
      20             : // Default compression window size.
      21             : const uint32_t DefaultWindowBits = 18;
      22             : 
      23             : // Default quality.
      24             : const uint32_t DefaultQuality = 3;
      25             : 
      26             : // Default zlib chunk size.
      27             : const uint32_t DefaultChunkSize = 4096;
      28             : 
      29             : namespace {
      30             : 
      31           0 : const std::string& brotliStatsPrefix() { CONSTRUCT_ON_FIRST_USE(std::string, "brotli."); }
      32           2 : const std::string& brotliExtensionName() {
      33           2 :   CONSTRUCT_ON_FIRST_USE(std::string, "envoy.compression.brotli.compressor");
      34           2 : }
      35             : 
      36             : } // namespace
      37             : 
      38             : class BrotliCompressorFactory : public Envoy::Compression::Compressor::CompressorFactory {
      39             : public:
      40             :   BrotliCompressorFactory(
      41             :       const envoy::extensions::compression::brotli::compressor::v3::Brotli& brotli);
      42             : 
      43             :   // Envoy::Compression::Compressor::CompressorFactory
      44             :   Envoy::Compression::Compressor::CompressorPtr createCompressor() override;
      45           0 :   const std::string& statsPrefix() const override { return brotliStatsPrefix(); }
      46           0 :   const std::string& contentEncoding() const override {
      47           0 :     return Http::CustomHeaders::get().ContentEncodingValues.Brotli;
      48           0 :   }
      49             : 
      50             : private:
      51             :   static BrotliCompressorImpl::EncoderMode encoderModeEnum(
      52             :       envoy::extensions::compression::brotli::compressor::v3::Brotli::EncoderMode encoder_mode);
      53             :   const uint32_t chunk_size_;
      54             :   const bool disable_literal_context_modeling_;
      55             :   const BrotliCompressorImpl::EncoderMode encoder_mode_;
      56             :   const uint32_t input_block_bits_;
      57             :   const uint32_t quality_;
      58             :   const uint32_t window_bits_;
      59             : };
      60             : 
      61             : class BrotliCompressorLibraryFactory
      62             :     : public Compression::Common::Compressor::CompressorLibraryFactoryBase<
      63             :           envoy::extensions::compression::brotli::compressor::v3::Brotli> {
      64             : public:
      65           2 :   BrotliCompressorLibraryFactory() : CompressorLibraryFactoryBase(brotliExtensionName()) {}
      66             : 
      67             : private:
      68             :   Envoy::Compression::Compressor::CompressorFactoryPtr createCompressorFactoryFromProtoTyped(
      69             :       const envoy::extensions::compression::brotli::compressor::v3::Brotli& config,
      70             :       Server::Configuration::FactoryContext& context) override;
      71             : };
      72             : 
      73             : DECLARE_FACTORY(BrotliCompressorLibraryFactory);
      74             : 
      75             : } // namespace Compressor
      76             : } // namespace Brotli
      77             : } // namespace Compression
      78             : } // namespace Extensions
      79             : } // namespace Envoy

Generated by: LCOV version 1.15