LCOV - code coverage report
Current view: top level - source/extensions/geoip_providers/common - factory_base.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 3 8 37.5 %
Date: 2024-01-05 06:35:25 Functions: 3 4 75.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include "envoy/geoip/geoip_provider_driver.h"
       4             : 
       5             : #include "source/common/protobuf/protobuf.h"
       6             : #include "source/common/protobuf/utility.h"
       7             : 
       8             : namespace Envoy {
       9             : namespace Extensions {
      10             : namespace GeoipProviders {
      11             : namespace Common {
      12             : 
      13             : /**
      14             :  * Common base class for geoip provider factory registrations. Removes a substantial amount of
      15             :  * boilerplate.
      16             :  */
      17             : template <class ConfigProto> class FactoryBase : public Geolocation::GeoipProviderFactory {
      18             : public:
      19             :   // GeoipProviderFactory
      20             :   Geolocation::DriverSharedPtr
      21             :   createGeoipProviderDriver(const Protobuf::Message& config, const std::string& stat_prefix,
      22           0 :                             Server::Configuration::FactoryContext& context) override {
      23           0 :     return createGeoipProviderDriverTyped(MessageUtil::downcastAndValidate<const ConfigProto&>(
      24           0 :                                               config, context.messageValidationVisitor()),
      25           0 :                                           stat_prefix, context);
      26           0 :   }
      27             : 
      28          38 :   std::string name() const override { return name_; }
      29             : 
      30           4 :   std::string category() const override { return "envoy.geoip_providers"; }
      31             : 
      32             : protected:
      33           2 :   FactoryBase(const std::string& name) : name_(name) {}
      34             : 
      35             : private:
      36             :   virtual Geolocation::DriverSharedPtr
      37             :   createGeoipProviderDriverTyped(const ConfigProto& proto_config, const std::string& stat_prefix,
      38             :                                  Server::Configuration::FactoryContext& context) PURE;
      39             : 
      40             :   const std::string name_;
      41             : };
      42             : 
      43             : } // namespace Common
      44             : } // namespace GeoipProviders
      45             : } // namespace Extensions
      46             : } // namespace Envoy

Generated by: LCOV version 1.15