1
#pragma once
2

            
3
#include "envoy/http/codec.h"
4
#include "envoy/registry/registry.h"
5

            
6
#include "source/common/common/assert.h"
7
#include "source/common/common/logger.h"
8
#include "source/common/quic/codec_impl.h"
9
#include "source/common/quic/envoy_quic_client_session.h"
10

            
11
namespace Envoy {
12
namespace Quic {
13

            
14
class QuicHttpClientConnectionImpl : public QuicHttpConnectionImplBase,
15
                                     public Http::ClientConnection {
16
public:
17
  QuicHttpClientConnectionImpl(EnvoyQuicClientSession& session,
18
                               Http::ConnectionCallbacks& callbacks, Http::Http3::CodecStats& stats,
19
                               const envoy::config::core::v3::Http3ProtocolOptions& http3_options,
20
                               const uint32_t max_request_headers_kb,
21
                               const uint32_t max_response_headers_count);
22

            
23
  // Http::ClientConnection
24
  Http::RequestEncoder& newStream(Http::ResponseDecoder& response_decoder) override;
25

            
26
  // Http::Connection
27
  void goAway() override;
28
4
  void shutdownNotice() override {}
29
  void onUnderlyingConnectionAboveWriteBufferHighWatermark() override;
30
  void onUnderlyingConnectionBelowWriteBufferLowWatermark() override;
31

            
32
private:
33
  EnvoyQuicClientSession& quic_client_session_;
34
};
35

            
36
} // namespace Quic
37
} // namespace Envoy