LCOV - code coverage report
Current view: top level - envoy/router - cluster_specifier_plugin.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 1 2 50.0 %
Date: 2024-01-05 06:35:25 Functions: 1 2 50.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include <functional>
       4             : #include <memory>
       5             : #include <string>
       6             : 
       7             : #include "envoy/common/pure.h"
       8             : #include "envoy/config/typed_config.h"
       9             : #include "envoy/router/router.h"
      10             : #include "envoy/server/factory_context.h"
      11             : 
      12             : namespace Envoy {
      13             : namespace Router {
      14             : 
      15             : /**
      16             :  * Interface class for creating cluster specifier plugin from related route entry.
      17             :  */
      18             : class ClusterSpecifierPlugin {
      19             : public:
      20           0 :   virtual ~ClusterSpecifierPlugin() = default;
      21             : 
      22             :   /**
      23             :    * Create route from related route entry and request headers.
      24             :    *
      25             :    * @param parent related route.
      26             :    * @param header request headers.
      27             :    * @return RouteConstSharedPtr final route with specific cluster.
      28             :    */
      29             :   virtual RouteConstSharedPtr route(RouteConstSharedPtr parent,
      30             :                                     const Http::RequestHeaderMap& header) const PURE;
      31             : };
      32             : 
      33             : using ClusterSpecifierPluginSharedPtr = std::shared_ptr<ClusterSpecifierPlugin>;
      34             : 
      35             : /*
      36             :  * Extension configuration for cluster specifier plugin factory.
      37             :  */
      38             : class ClusterSpecifierPluginFactoryConfig : public Envoy::Config::TypedFactory {
      39             : public:
      40             :   /**
      41             :    * Creates a particular cluster specifier plugin factory implementation.
      42             :    *
      43             :    * @param config supplies the configuration for the cluster specifier plugin factory extension.
      44             :    * @return ClusterSpecifierPluginSharedPtr cluster specifier plugin use to create final route from
      45             :    * request headers.
      46             :    */
      47             :   virtual ClusterSpecifierPluginSharedPtr
      48             :   createClusterSpecifierPlugin(const Protobuf::Message& config,
      49             :                                Server::Configuration::CommonFactoryContext& context) PURE;
      50             : 
      51           4 :   std::string category() const override { return "envoy.router.cluster_specifier_plugin"; }
      52             : };
      53             : 
      54             : using ClusterSpecifierPluginFactoryConfigPtr = std::unique_ptr<ClusterSpecifierPluginFactoryConfig>;
      55             : 
      56             : } // namespace Router
      57             : } // namespace Envoy

Generated by: LCOV version 1.15