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