1
#pragma once
2

            
3
#include "envoy/extensions/transport_sockets/internal_upstream/v3/internal_upstream.pb.h"
4

            
5
#include "source/extensions/io_socket/user_space/io_handle.h"
6
#include "source/extensions/transport_sockets/common/passthrough.h"
7

            
8
namespace Envoy {
9
namespace Extensions {
10
namespace TransportSockets {
11
namespace InternalUpstream {
12

            
13
class InternalSocket : public TransportSockets::PassthroughSocket {
14
public:
15
  InternalSocket(Network::TransportSocketPtr inner_socket,
16
                 std::unique_ptr<envoy::config::core::v3::Metadata> metadata,
17
                 const StreamInfo::FilterState::Objects& filter_state_objects);
18

            
19
  // Network::TransportSocket
20
  void setTransportSocketCallbacks(Network::TransportSocketCallbacks& callbacks) override;
21

            
22
private:
23
  std::unique_ptr<envoy::config::core::v3::Metadata> metadata_;
24
  StreamInfo::FilterState::Objects filter_state_objects_;
25
};
26

            
27
} // namespace InternalUpstream
28
} // namespace TransportSockets
29
} // namespace Extensions
30
} // namespace Envoy