LCOV - code coverage report
Current view: top level - source/extensions/compression/zstd/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/zstd/decompressor/v3/zstd.pb.h"
       5             : #include "envoy/extensions/compression/zstd/decompressor/v3/zstd.pb.validate.h"
       6             : 
       7             : #include "source/common/http/headers.h"
       8             : #include "source/extensions/compression/common/decompressor/factory_base.h"
       9             : #include "source/extensions/compression/zstd/decompressor/zstd_decompressor_impl.h"
      10             : 
      11             : namespace Envoy {
      12             : namespace Extensions {
      13             : namespace Compression {
      14             : namespace Zstd {
      15             : namespace Decompressor {
      16             : 
      17             : namespace {
      18           0 : const std::string& zstdStatsPrefix() { CONSTRUCT_ON_FIRST_USE(std::string, "zstd."); }
      19           2 : const std::string& zstdExtensionName() {
      20           2 :   CONSTRUCT_ON_FIRST_USE(std::string, "envoy.compression.zstd.decompressor");
      21           2 : }
      22             : 
      23             : } // namespace
      24             : 
      25             : class ZstdDecompressorFactory : public Envoy::Compression::Decompressor::DecompressorFactory {
      26             : public:
      27             :   ZstdDecompressorFactory(const envoy::extensions::compression::zstd::decompressor::v3::Zstd& zstd,
      28             :                           Stats::Scope& scope, Event::Dispatcher& dispatcher, Api::Api& api,
      29             :                           ThreadLocal::SlotAllocator& tls);
      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 zstdStatsPrefix(); }
      35           0 :   const std::string& contentEncoding() const override {
      36           0 :     return Http::CustomHeaders::get().ContentEncodingValues.Zstd;
      37           0 :   }
      38             : 
      39             : private:
      40             :   Stats::Scope& scope_;
      41             :   const uint32_t chunk_size_;
      42             :   ZstdDDictManagerPtr ddict_manager_{nullptr};
      43             : };
      44             : 
      45             : class ZstdDecompressorLibraryFactory
      46             :     : public Compression::Common::Decompressor::DecompressorLibraryFactoryBase<
      47             :           envoy::extensions::compression::zstd::decompressor::v3::Zstd> {
      48             : public:
      49           2 :   ZstdDecompressorLibraryFactory() : DecompressorLibraryFactoryBase(zstdExtensionName()) {}
      50             : 
      51             : private:
      52             :   Envoy::Compression::Decompressor::DecompressorFactoryPtr createDecompressorFactoryFromProtoTyped(
      53             :       const envoy::extensions::compression::zstd::decompressor::v3::Zstd& proto_config,
      54             :       Server::Configuration::FactoryContext& context) override;
      55             : };
      56             : 
      57             : DECLARE_FACTORY(ZstdDecompressorLibraryFactory);
      58             : 
      59             : } // namespace Decompressor
      60             : } // namespace Zstd
      61             : } // namespace Compression
      62             : } // namespace Extensions
      63             : } // namespace Envoy

Generated by: LCOV version 1.15