Line data Source code
1 : #pragma once 2 : 3 : #include "envoy/compression/compressor/config.h" 4 : #include "envoy/compression/compressor/factory.h" 5 : #include "envoy/server/filter_config.h" 6 : 7 : namespace Envoy { 8 : namespace Extensions { 9 : namespace Compression { 10 : namespace Common { 11 : namespace Compressor { 12 : 13 : template <class ConfigProto> 14 : class CompressorLibraryFactoryBase 15 : : public Envoy::Compression::Compressor::NamedCompressorLibraryConfigFactory { 16 : public: 17 : Envoy::Compression::Compressor::CompressorFactoryPtr 18 : createCompressorFactoryFromProto(const Protobuf::Message& proto_config, 19 0 : Server::Configuration::FactoryContext& context) override { 20 0 : return createCompressorFactoryFromProtoTyped( 21 0 : MessageUtil::downcastAndValidate<const ConfigProto&>(proto_config, 22 0 : context.messageValidationVisitor()), 23 0 : context); 24 0 : } 25 : 26 3 : ProtobufTypes::MessagePtr createEmptyConfigProto() override { 27 3 : return std::make_unique<ConfigProto>(); 28 3 : } 29 : 30 114 : std::string name() const override { return name_; } 31 : 32 : protected: 33 6 : CompressorLibraryFactoryBase(const std::string& name) : name_(name) {} 34 : 35 : private: 36 : virtual Envoy::Compression::Compressor::CompressorFactoryPtr 37 : createCompressorFactoryFromProtoTyped(const ConfigProto&, 38 : Server::Configuration::FactoryContext&) PURE; 39 : 40 : const std::string name_; 41 : }; 42 : 43 : } // namespace Compressor 44 : } // namespace Common 45 : } // namespace Compression 46 : } // namespace Extensions 47 : } // namespace Envoy