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