Line data Source code
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/crypto/quic_crypto_server_config.h" 8 : #include "quiche/quic/core/quic_crypto_server_stream_base.h" 9 : #include "quiche/quic/core/quic_session.h" 10 : #include "quiche/quic/core/tls_server_handshaker.h" 11 : 12 : namespace Envoy { 13 : namespace Quic { 14 : 15 : class EnvoyQuicCryptoServerStreamFactoryInterface : public Config::TypedFactory { 16 : public: 17 26 : std::string category() const override { return "envoy.quic.server.crypto_stream"; } 18 : 19 : // Return an Envoy specific quic crypto server stream object. 20 : virtual std::unique_ptr<quic::QuicCryptoServerStreamBase> createEnvoyQuicCryptoServerStream( 21 : const quic::QuicCryptoServerConfig* crypto_config, 22 : quic::QuicCompressedCertsCache* compressed_certs_cache, quic::QuicSession* session, 23 : quic::QuicCryptoServerStreamBase::Helper* helper, 24 : OptRef<const Network::DownstreamTransportSocketFactory> transport_socket_factory, 25 : Event::Dispatcher& dispatcher) PURE; 26 : }; 27 : 28 : } // namespace Quic 29 : } // namespace Envoy