LCOV - code coverage report
Current view: top level - source/extensions/compression/brotli/decompressor - 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/decompressor/config.h"
       4             : #include "envoy/extensions/compression/brotli/decompressor/v3/brotli.pb.h"
       5             : #include "envoy/extensions/compression/brotli/decompressor/v3/brotli.pb.validate.h"
       6             : 
       7             : #include "source/common/http/headers.h"
       8             : #include "source/extensions/compression/brotli/decompressor/brotli_decompressor_impl.h"
       9             : #include "source/extensions/compression/common/decompressor/factory_base.h"
      10             : 
      11             : namespace Envoy {
      12             : namespace Extensions {
      13             : namespace Compression {
      14             : namespace Brotli {
      15             : namespace Decompressor {
      16             : 
      17             : namespace {
      18           0 : const std::string& brotliStatsPrefix() { CONSTRUCT_ON_FIRST_USE(std::string, "brotli."); }
      19           2 : const std::string& brotliExtensionName() {
      20           2 :   CONSTRUCT_ON_FIRST_USE(std::string, "envoy.compression.brotli.decompressor");
      21           2 : }
      22             : 
      23             : } // namespace
      24             : 
      25             : class BrotliDecompressorFactory : public Envoy::Compression::Decompressor::DecompressorFactory {
      26             : public:
      27             :   BrotliDecompressorFactory(
      28             :       const envoy::extensions::compression::brotli::decompressor::v3::Brotli& brotli,
      29             :       Stats::Scope& scope);
      30             : 
      31             :   // Envoy::Compression::Decompressor::DecompressorFactory
      32             :   Envoy::Compression::Decompressor::DecompressorPtr
      33             :   createDecompressor(const std::string& stats_prefix) override;
      34           0 :   const std::string& statsPrefix() const override { return brotliStatsPrefix(); }
      35           0 :   const std::string& contentEncoding() const override {
      36           0 :     return Http::CustomHeaders::get().ContentEncodingValues.Brotli;
      37           0 :   }
      38             : 
      39             : private:
      40             :   Stats::Scope& scope_;
      41             :   const uint32_t chunk_size_;
      42             :   const bool disable_ring_buffer_reallocation_;
      43             : };
      44             : 
      45             : class BrotliDecompressorLibraryFactory
      46             :     : public Compression::Common::Decompressor::DecompressorLibraryFactoryBase<
      47             :           envoy::extensions::compression::brotli::decompressor::v3::Brotli> {
      48             : public:
      49           2 :   BrotliDecompressorLibraryFactory() : DecompressorLibraryFactoryBase(brotliExtensionName()) {}
      50             : 
      51             : private:
      52             :   Envoy::Compression::Decompressor::DecompressorFactoryPtr createDecompressorFactoryFromProtoTyped(
      53             :       const envoy::extensions::compression::brotli::decompressor::v3::Brotli& proto_config,
      54             :       Server::Configuration::FactoryContext& context) override;
      55             : };
      56             : 
      57             : DECLARE_FACTORY(BrotliDecompressorLibraryFactory);
      58             : 
      59             : } // namespace Decompressor
      60             : } // namespace Brotli
      61             : } // namespace Compression
      62             : } // namespace Extensions
      63             : } // namespace Envoy

Generated by: LCOV version 1.15