1
#pragma once
2

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

            
6
namespace Envoy {
7
namespace Extensions {
8
namespace TransportSockets {
9
namespace RawBuffer {
10

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

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

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

            
40
DECLARE_FACTORY(UpstreamRawBufferSocketFactory);
41

            
42
DECLARE_FACTORY(DownstreamRawBufferSocketFactory);
43

            
44
} // namespace RawBuffer
45
} // namespace TransportSockets
46
} // namespace Extensions
47
} // namespace Envoy