Coverage Report

Created: 2024-09-19 09:45

/proc/self/cwd/source/common/quic/codec_impl.h
Line
Count
Source (jump to first uncovered line)
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/quic_filter_manager_connection_impl.h"
9
10
namespace Envoy {
11
namespace Quic {
12
13
// QuicHttpConnectionImplBase instance is a thin QUIC codec just providing quic interface to HCM.
14
// Owned by HCM and created during onNewConnection() if the network connection
15
// is a QUIC connection.
16
class QuicHttpConnectionImplBase : public virtual Http::Connection,
17
                                   protected Logger::Loggable<Logger::Id::quic> {
18
public:
19
  QuicHttpConnectionImplBase(QuicFilterManagerConnectionImpl& quic_session,
20
                             Http::Http3::CodecStats& stats)
21
0
      : quic_session_(quic_session), stats_(stats) {}
22
23
  // Http::Connection
24
0
  Http::Status dispatch(Buffer::Instance& /*data*/) override {
25
0
    PANIC("not implemented"); // QUIC connection already hands all data to streams.
26
0
  }
27
0
  Http::Protocol protocol() override { return Http::Protocol::Http3; }
28
  // Returns true if the session has data to send but queued in connection or
29
  // stream send buffer.
30
0
  bool wantsToWrite() override { return quic_session_.bytesToSend() > 0; }
31
32
protected:
33
  QuicFilterManagerConnectionImpl& quic_session_;
34
  Http::Http3::CodecStats& stats_;
35
};
36
37
} // namespace Quic
38
} // namespace Envoy