1
#pragma once
2

            
3
#include "envoy/extensions/upstreams/http/dynamic_modules/v3/dynamic_modules.pb.h"
4
#include "envoy/extensions/upstreams/http/dynamic_modules/v3/dynamic_modules.pb.validate.h"
5
#include "envoy/registry/registry.h"
6
#include "envoy/router/router.h"
7

            
8
namespace Envoy {
9
namespace Extensions {
10
namespace Upstreams {
11
namespace Http {
12
namespace DynamicModules {
13

            
14
/**
15
 * Config registration for the dynamic module upstream HTTP TCP bridge.
16
 * @see Router::GenericConnPoolFactory
17
 */
18
class DynamicModuleGenericConnPoolFactory : public Router::GenericConnPoolFactory {
19
public:
20
11
  std::string name() const override { return "envoy.upstreams.http.dynamic_modules"; }
21
14
  std::string category() const override { return "envoy.upstreams"; }
22
  Router::GenericConnPoolPtr createGenericConnPool(
23
      Upstream::HostConstSharedPtr host, Upstream::ThreadLocalCluster& thread_local_cluster,
24
      Router::GenericConnPoolFactory::UpstreamProtocol upstream_protocol,
25
      Upstream::ResourcePriority priority,
26
      absl::optional<Envoy::Http::Protocol> downstream_protocol, Upstream::LoadBalancerContext* ctx,
27
      const Protobuf::Message& config) const override;
28
5
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
29
5
    return std::make_unique<envoy::extensions::upstreams::http::dynamic_modules::v3::Config>();
30
5
  }
31
};
32

            
33
DECLARE_FACTORY(DynamicModuleGenericConnPoolFactory);
34

            
35
} // namespace DynamicModules
36
} // namespace Http
37
} // namespace Upstreams
38
} // namespace Extensions
39
} // namespace Envoy