1
#pragma once
2

            
3
#include "envoy/common/optref.h"
4
#include "envoy/config/typed_config.h"
5
#include "envoy/network/transport_socket.h"
6

            
7
#include "quiche/quic/core/quic_crypto_client_stream.h"
8
#include "quiche/quic/core/quic_session.h"
9

            
10
namespace Envoy {
11
namespace Quic {
12

            
13
class EnvoyQuicCryptoClientStreamFactoryInterface {
14
public:
15
2160
  virtual ~EnvoyQuicCryptoClientStreamFactoryInterface() = default;
16

            
17
  // Return an Envoy specific quic crypto client stream object.
18
  virtual std::unique_ptr<quic::QuicCryptoClientStreamBase>
19
  createEnvoyQuicCryptoClientStream(const quic::QuicServerId& server_id, quic::QuicSession* session,
20
                                    std::unique_ptr<quic::ProofVerifyContext> verify_context,
21
                                    quic::QuicCryptoClientConfig* crypto_config,
22
                                    quic::QuicCryptoClientStream::ProofHandler* proof_handler) PURE;
23
};
24

            
25
} // namespace Quic
26
} // namespace Envoy