1
#pragma once
2

            
3
#include "envoy/buffer/buffer.h"
4
#include "envoy/network/connection.h"
5
#include "envoy/network/transport_socket.h"
6

            
7
#include "source/common/common/logger.h"
8
#include "source/common/network/transport_socket_options_impl.h"
9

            
10
namespace Envoy {
11
namespace Network {
12

            
13
class RawBufferSocket : public TransportSocket, protected Logger::Loggable<Logger::Id::connection> {
14
public:
15
  // Network::TransportSocket
16
  void setTransportSocketCallbacks(TransportSocketCallbacks& callbacks) override;
17
  std::string protocol() const override;
18
  absl::string_view failureReason() const override;
19
4983
  bool canFlushClose() override { return true; }
20
105528
  void closeSocket(Network::ConnectionEvent) override {}
21
  void onConnected() override;
22
  IoResult doRead(Buffer::Instance& buffer) override;
23
  IoResult doWrite(Buffer::Instance& buffer, bool end_stream) override;
24
105586
  Ssl::ConnectionInfoConstSharedPtr ssl() const override { return nullptr; }
25
  bool startSecureTransport() override { return false; }
26
  void configureInitialCongestionWindow(uint64_t, std::chrono::microseconds) override {}
27

            
28
protected:
29
2
  TransportSocketCallbacks* transportSocketCallbacks() const { return callbacks_; };
30

            
31
private:
32
  bool shutdown_{};
33
  TransportSocketCallbacks* callbacks_{};
34
};
35

            
36
class RawBufferSocketFactory : public DownstreamTransportSocketFactory,
37
                               public CommonUpstreamTransportSocketFactory {
38
public:
39
  // Network::UpstreamTransportSocketFactory
40
  TransportSocketPtr createTransportSocket(TransportSocketOptionsConstSharedPtr,
41
                                           Upstream::HostDescriptionConstSharedPtr) const override;
42
  bool implementsSecureTransport() const override;
43
10183
  absl::string_view defaultServerNameIndication() const override { return ""; }
44
  // Network::DownstreamTransportSocketFactory
45
  TransportSocketPtr createDownstreamTransportSocket() const override;
46
};
47

            
48
} // namespace Network
49
} // namespace Envoy