xref: /aosp_15_r20/external/cronet/net/quic/quic_http3_logger.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2019 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef NET_QUIC_QUIC_HTTP3_LOGGER_H_
6 #define NET_QUIC_QUIC_HTTP3_LOGGER_H_
7 
8 #include <stddef.h>
9 
10 #include "base/timer/timer.h"
11 #include "net/log/net_log_with_source.h"
12 #include "net/third_party/quiche/src/quiche/quic/core/http/quic_spdy_session.h"
13 
14 namespace net {
15 
16 // This class is a debug visitor of a quic::QuicSpdySession which logs events
17 // to |net_log| and records histograms.
18 class NET_EXPORT_PRIVATE QuicHttp3Logger : public quic::Http3DebugVisitor {
19  public:
20   explicit QuicHttp3Logger(const NetLogWithSource& net_log);
21 
22   QuicHttp3Logger(const QuicHttp3Logger&) = delete;
23   QuicHttp3Logger& operator=(const QuicHttp3Logger&) = delete;
24 
25   ~QuicHttp3Logger() override;
26 
27   // Implementation of Http3DebugVisitor.
28   void OnControlStreamCreated(quic::QuicStreamId stream_id) override;
29   void OnQpackEncoderStreamCreated(quic::QuicStreamId stream_id) override;
30   void OnQpackDecoderStreamCreated(quic::QuicStreamId stream_id) override;
31   void OnPeerControlStreamCreated(quic::QuicStreamId stream_id) override;
32   void OnPeerQpackEncoderStreamCreated(quic::QuicStreamId stream_id) override;
33   void OnPeerQpackDecoderStreamCreated(quic::QuicStreamId stream_id) override;
34 
35   void OnSettingsFrameReceived(const quic::SettingsFrame& frame) override;
36   void OnSettingsFrameResumed(const quic::SettingsFrame& frame) override;
37   void OnGoAwayFrameReceived(const quic::GoAwayFrame& frame) override;
38   void OnPriorityUpdateFrameReceived(
39       const quic::PriorityUpdateFrame& frame) override;
40 
41   void OnDataFrameReceived(quic::QuicStreamId stream_id,
42                            quic::QuicByteCount payload_length) override;
43   void OnHeadersFrameReceived(
44       quic::QuicStreamId stream_id,
45       quic::QuicByteCount compressed_headers_length) override;
46   void OnHeadersDecoded(quic::QuicStreamId stream_id,
47                         quic::QuicHeaderList headers) override;
48 
49   void OnUnknownFrameReceived(quic::QuicStreamId stream_id,
50                               uint64_t frame_type,
51                               quic::QuicByteCount payload_length) override;
52 
53   void OnSettingsFrameSent(const quic::SettingsFrame& frame) override;
54   void OnGoAwayFrameSent(quic::QuicStreamId stream_id) override;
55   void OnPriorityUpdateFrameSent(
56       const quic::PriorityUpdateFrame& frame) override;
57 
58   void OnDataFrameSent(quic::QuicStreamId stream_id,
59                        quic::QuicByteCount payload_length) override;
60   void OnHeadersFrameSent(quic::QuicStreamId stream_id,
61                           const spdy::Http2HeaderBlock& header_block) override;
62 
63  private:
64   NetLogWithSource net_log_;
65 };
66 }  // namespace net
67 
68 #endif  // NET_QUIC_QUIC_HTTP3_LOGGER_H_
69