1
#pragma once
2

            
3
#include "envoy/extensions/geoip_providers/maxmind/v3/maxmind.pb.h"
4
#include "envoy/extensions/geoip_providers/maxmind/v3/maxmind.pb.validate.h"
5

            
6
#include "source/common/protobuf/protobuf.h"
7
#include "source/extensions/geoip_providers/common/factory_base.h"
8

            
9
namespace Envoy {
10
namespace Extensions {
11
namespace GeoipProviders {
12
namespace Maxmind {
13

            
14
using DriverSharedPtr = Envoy::Geolocation::DriverSharedPtr;
15

            
16
class MaxmindProviderFactory
17
    : public Common::FactoryBase<envoy::extensions::geoip_providers::maxmind::v3::MaxMindConfig> {
18
public:
19
  MaxmindProviderFactory();
20

            
21
31
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
22
31
    return std::make_unique<envoy::extensions::geoip_providers::maxmind::v3::MaxMindConfig>();
23
31
  }
24

            
25
private:
26
  // FactoryBase
27
  DriverSharedPtr createGeoipProviderDriverTyped(
28
      const envoy::extensions::geoip_providers::maxmind::v3::MaxMindConfig& proto_config,
29
      const std::string& stat_prefix, Server::Configuration::FactoryContext& context) override;
30
};
31

            
32
DECLARE_FACTORY(MaxmindProviderFactory);
33

            
34
} // namespace Maxmind
35
} // namespace GeoipProviders
36
} // namespace Extensions
37
} // namespace Envoy