1
#pragma once
2

            
3
#include "envoy/extensions/quic/crypto_stream/v3/crypto_stream.pb.h"
4
#include "envoy/registry/registry.h"
5

            
6
#include "source/common/quic/envoy_quic_server_crypto_stream_factory.h"
7

            
8
namespace Envoy {
9
namespace Quic {
10

            
11
class EnvoyQuicCryptoServerStreamFactoryImpl : public EnvoyQuicCryptoServerStreamFactoryInterface {
12
public:
13
472
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
14
472
    return std::make_unique<envoy::extensions::quic::crypto_stream::v3::CryptoServerStreamConfig>();
15
472
  }
16
11184
  std::string name() const override { return "envoy.quic.crypto_stream.server.quiche"; }
17
  std::unique_ptr<quic::QuicCryptoServerStreamBase> createEnvoyQuicCryptoServerStream(
18
      const quic::QuicCryptoServerConfig* crypto_config,
19
      quic::QuicCompressedCertsCache* compressed_certs_cache, quic::QuicSession* session,
20
      quic::QuicCryptoServerStreamBase::Helper* helper,
21
      OptRef<const Network::DownstreamTransportSocketFactory> transport_socket_factory,
22
      Envoy::Event::Dispatcher& dispatcher) override;
23
};
24

            
25
DECLARE_FACTORY(EnvoyQuicCryptoServerStreamFactoryImpl);
26

            
27
} // namespace Quic
28
} // namespace Envoy