Line data Source code
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 498 : bool canFlushClose() override { return true; } 20 2370 : 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 2370 : Ssl::ConnectionInfoConstSharedPtr ssl() const override { return nullptr; } 25 0 : bool startSecureTransport() override { return false; } 26 0 : void configureInitialCongestionWindow(uint64_t, std::chrono::microseconds) override {} 27 : 28 : protected: 29 0 : 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 173 : absl::string_view defaultServerNameIndication() const override { return ""; } 44 : // Network::DownstreamTransportSocketFactory 45 : TransportSocketPtr createDownstreamTransportSocket() const override; 46 : }; 47 : 48 : } // namespace Network 49 : } // namespace Envoy