blob: 3c54639f11c9003903ac2c622882a6a99053aa84 [file] [log] [blame]
Avi Drissman64595482022-09-14 20:52:291// Copyright 2019 The Chromium Authors
Renjie Tang01447c82019-09-24 19:32:592// 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
Renjie Tang01447c82019-09-24 19:32:5910#include "base/timer/timer.h"
11#include "net/log/net_log_with_source.h"
Ryan Hamiltonea4fa192022-04-12 18:30:4912#include "net/third_party/quiche/src/quiche/quic/core/http/quic_spdy_session.h"
Renjie Tang01447c82019-09-24 19:32:5913
14namespace net {
15
16// This class is a debug visitor of a quic::QuicSpdySession which logs events
Bence Béky230fdd92019-10-10 02:32:0317// to |net_log| and records histograms.
Renjie Tang01447c82019-09-24 19:32:5918class NET_EXPORT_PRIVATE QuicHttp3Logger : public quic::Http3DebugVisitor {
19 public:
Renjie Tangaa3767df2019-09-25 23:35:2220 explicit QuicHttp3Logger(const NetLogWithSource& net_log);
Renjie Tang01447c82019-09-24 19:32:5921
Peter Boström293b1342021-09-22 17:31:4322 QuicHttp3Logger(const QuicHttp3Logger&) = delete;
23 QuicHttp3Logger& operator=(const QuicHttp3Logger&) = delete;
24
Renjie Tang01447c82019-09-24 19:32:5925 ~QuicHttp3Logger() override;
26
27 // Implementation of Http3DebugVisitor.
Bence Béky9aa04b942020-04-02 20:58:2028 void OnControlStreamCreated(quic::QuicStreamId stream_id) override;
29 void OnQpackEncoderStreamCreated(quic::QuicStreamId stream_id) override;
30 void OnQpackDecoderStreamCreated(quic::QuicStreamId stream_id) override;
Renjie Tang01447c82019-09-24 19:32:5931 void OnPeerControlStreamCreated(quic::QuicStreamId stream_id) override;
32 void OnPeerQpackEncoderStreamCreated(quic::QuicStreamId stream_id) override;
33 void OnPeerQpackDecoderStreamCreated(quic::QuicStreamId stream_id) override;
Bence Béky9aa04b942020-04-02 20:58:2034
David Schinazi09e9a6012019-10-03 17:37:5735 void OnSettingsFrameReceived(const quic::SettingsFrame& frame) override;
Renjie Tangb479daa2020-08-14 23:47:5936 void OnSettingsFrameResumed(const quic::SettingsFrame& frame) override;
Bence Béky9aa04b942020-04-02 20:58:2037 void OnGoAwayFrameReceived(const quic::GoAwayFrame& frame) override;
Bence Béky9aa04b942020-04-02 20:58:2038 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;
Bence Béky9aa04b942020-04-02 20:58:2048
49 void OnUnknownFrameReceived(quic::QuicStreamId stream_id,
50 uint64_t frame_type,
51 quic::QuicByteCount payload_length) override;
52
David Schinazi09e9a6012019-10-03 17:37:5753 void OnSettingsFrameSent(const quic::SettingsFrame& frame) override;
Bence Béky9aa04b942020-04-02 20:58:2054 void OnGoAwayFrameSent(quic::QuicStreamId stream_id) override;
Bence Béky9aa04b942020-04-02 20:58:2055 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,
Bence Béky4c325e52020-10-22 20:48:0161 const spdy::Http2HeaderBlock& header_block) override;
Renjie Tang01447c82019-09-24 19:32:5962
63 private:
64 NetLogWithSource net_log_;
Renjie Tang01447c82019-09-24 19:32:5965};
66} // namespace net
67
68#endif // NET_QUIC_QUIC_HTTP3_LOGGER_H_