LCOV - code coverage report
Current view: top level - envoy/geoip - geoip_provider_driver.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 0 5 0.0 %
Date: 2024-01-05 06:35:25 Functions: 0 5 0.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include "envoy/config/typed_config.h"
       4             : #include "envoy/network/address.h"
       5             : #include "envoy/protobuf/message_validator.h"
       6             : #include "envoy/server/factory_context.h"
       7             : 
       8             : #include "absl/container/flat_hash_set.h"
       9             : 
      10             : namespace Envoy {
      11             : namespace Geolocation {
      12             : 
      13             : // Actual result of the lookup. Each entry in the map represents the geolocation header (entry key)
      14             : // for which the lookup was invoked mapped to a lookup result from the database.
      15             : using LookupResult = const absl::flat_hash_map<std::string, std::string>;
      16             : 
      17             : // Async callbacks used for geolocation provider lookups.
      18             : using LookupGeoHeadersCallback = std::function<void(LookupResult&&)>;
      19             : 
      20             : class LookupRequest {
      21             : public:
      22             :   LookupRequest() = default;
      23             :   LookupRequest(Network::Address::InstanceConstSharedPtr&& remote_address)
      24           0 :       : remote_address_(std::move(remote_address)){};
      25             : 
      26           0 :   const Network::Address::InstanceConstSharedPtr remoteAddress() const { return remote_address_; }
      27             : 
      28             : private:
      29             :   Network::Address::InstanceConstSharedPtr remote_address_;
      30             : };
      31             : 
      32             : class Driver {
      33             : public:
      34           0 :   virtual ~Driver() = default;
      35             : 
      36             :   /**
      37             :    *  Performs asynchronous lookup in the geolocation database.
      38             :    *
      39             :    *  @param request containing geolocation headers to lookup in the database.
      40             :    *  @param cb supplies the filter callbacks to notify when lookup is complete.
      41             :    */
      42             :   virtual void lookup(LookupRequest&& request, LookupGeoHeadersCallback&& cb) const PURE;
      43             : };
      44             : 
      45             : using DriverSharedPtr = std::shared_ptr<Driver>;
      46             : 
      47             : /**
      48             :  * Implemented by each geolocation provider and registered via Registry::registerFactory() or the
      49             :  * convenience class RegisterFactory.
      50             :  */
      51             : class GeoipProviderFactory : public Config::TypedFactory {
      52             : public:
      53           0 :   ~GeoipProviderFactory() override = default;
      54             : 
      55             :   /**
      56             :    * Create a particular geolocation provider implementation. If the implementation is unable to
      57             :    * produce a geolocation provider with the provided parameters, it should throw an EnvoyException
      58             :    * in the case of general error or a Json::Exception if the json configuration is erroneous. The
      59             :    * returned pointer should always be valid.
      60             :    *
      61             :    *
      62             :    * @param config supplies the proto configuration for the geolocation provider
      63             :    * @param context supplies the factory context
      64             :    */
      65             :   virtual DriverSharedPtr
      66             :   createGeoipProviderDriver(const Protobuf::Message& config, const std::string& stat_prefix,
      67             :                             Server::Configuration::FactoryContext& context) PURE;
      68             : 
      69           0 :   std::string category() const override { return "envoy.geoip_providers"; }
      70             : };
      71             : 
      72             : } // namespace Geolocation
      73             : } // namespace Envoy

Generated by: LCOV version 1.15