LCOV - code coverage report
Current view: top level - source/common/quic - server_codec_impl.cc (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 0 31 0.0 %
Date: 2024-01-05 06:35:25 Functions: 0 9 0.0 %

          Line data    Source code
       1             : #include "source/common/quic/server_codec_impl.h"
       2             : 
       3             : #include "source/common/quic/envoy_quic_server_stream.h"
       4             : 
       5             : namespace Envoy {
       6             : namespace Quic {
       7             : 
       8             : // Converts a QuicStream instance to EnvoyQuicStream instance. The current stream implementation
       9             : // inherits from these two interfaces, with the former one providing Quic interface and the latter
      10             : // providing Envoy interface.
      11           0 : EnvoyQuicStream* quicStreamToEnvoyStream(quic::QuicStream* stream) {
      12           0 :   return dynamic_cast<EnvoyQuicStream*>(stream);
      13           0 : }
      14             : 
      15             : QuicHttpServerConnectionImpl::QuicHttpServerConnectionImpl(
      16             :     EnvoyQuicServerSession& quic_session, Http::ServerConnectionCallbacks& callbacks,
      17             :     Http::Http3::CodecStats& stats,
      18             :     const envoy::config::core::v3::Http3ProtocolOptions& http3_options,
      19             :     const uint32_t max_request_headers_kb, const uint32_t max_request_headers_count,
      20             :     envoy::config::core::v3::HttpProtocolOptions::HeadersWithUnderscoresAction
      21             :         headers_with_underscores_action)
      22           0 :     : QuicHttpConnectionImplBase(quic_session, stats), quic_server_session_(quic_session) {
      23           0 :   quic_session.setCodecStats(stats);
      24           0 :   quic_session.setHttp3Options(http3_options);
      25           0 :   quic_session.setHeadersWithUnderscoreAction(headers_with_underscores_action);
      26           0 :   quic_session.setHttpConnectionCallbacks(callbacks);
      27           0 :   quic_session.setMaxIncomingHeadersCount(max_request_headers_count);
      28           0 :   quic_session.set_max_inbound_header_list_size(max_request_headers_kb * 1024u);
      29           0 : }
      30             : 
      31           0 : void QuicHttpServerConnectionImpl::onUnderlyingConnectionAboveWriteBufferHighWatermark() {
      32           0 :   quic_server_session_.PerformActionOnActiveStreams([](quic::QuicStream* quic_stream) {
      33           0 :     ENVOY_LOG(debug, "runHighWatermarkCallbacks on stream {}", quic_stream->id());
      34           0 :     quicStreamToEnvoyStream(quic_stream)->runHighWatermarkCallbacks();
      35           0 :     return true;
      36           0 :   });
      37           0 : }
      38             : 
      39           0 : void QuicHttpServerConnectionImpl::onUnderlyingConnectionBelowWriteBufferLowWatermark() {
      40           0 :   quic_server_session_.PerformActionOnActiveStreams([](quic::QuicStream* quic_stream) {
      41           0 :     ENVOY_LOG(debug, "runLowWatermarkCallbacks on stream {}", quic_stream->id());
      42           0 :     quicStreamToEnvoyStream(quic_stream)->runLowWatermarkCallbacks();
      43           0 :     return true;
      44           0 :   });
      45           0 : }
      46             : 
      47           0 : void QuicHttpServerConnectionImpl::shutdownNotice() {
      48           0 :   quic_server_session_.SendHttp3GoAway(quic::QUIC_PEER_GOING_AWAY, "Server shutdown");
      49           0 : }
      50             : 
      51           0 : void QuicHttpServerConnectionImpl::goAway() {
      52           0 :   quic_server_session_.SendHttp3GoAway(quic::QUIC_PEER_GOING_AWAY, "server shutdown imminent");
      53           0 : }
      54             : 
      55             : REGISTER_FACTORY(QuicHttpServerConnectionFactoryImpl, QuicHttpServerConnectionFactory);
      56             : 
      57             : } // namespace Quic
      58             : } // namespace Envoy

Generated by: LCOV version 1.15