1
#pragma once
2

            
3
#include "envoy/server/transport_socket_config.h"
4

            
5
namespace Envoy {
6
namespace Extensions {
7
namespace TransportSockets {
8
namespace Tap {
9

            
10
/**
11
 * Config registration for the tap wrapper for transport socket factory.
12
 * @see TransportSocketConfigFactory.
13
 */
14
class TapSocketConfigFactory : public virtual Server::Configuration::TransportSocketConfigFactory {
15
public:
16
24
  std::string name() const override { return "envoy.transport_sockets.tap"; }
17
  ProtobufTypes::MessagePtr createEmptyConfigProto() override;
18
};
19

            
20
class UpstreamTapSocketConfigFactory
21
    : public Server::Configuration::UpstreamTransportSocketConfigFactory,
22
      public TapSocketConfigFactory {
23
public:
24
  absl::StatusOr<Network::UpstreamTransportSocketFactoryPtr> createTransportSocketFactory(
25
      const Protobuf::Message& config,
26
      Server::Configuration::TransportSocketFactoryContext& context) override;
27
};
28

            
29
class DownstreamTapSocketConfigFactory
30
    : public Server::Configuration::DownstreamTransportSocketConfigFactory,
31
      public TapSocketConfigFactory {
32
public:
33
  absl::StatusOr<Network::DownstreamTransportSocketFactoryPtr>
34
  createTransportSocketFactory(const Protobuf::Message& config,
35
                               Server::Configuration::TransportSocketFactoryContext& context,
36
                               const std::vector<std::string>& server_names) override;
37
};
38

            
39
} // namespace Tap
40
} // namespace TransportSockets
41
} // namespace Extensions
42
} // namespace Envoy