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/common/http/http_header_block.h" 13 #include "net/third_party/quiche/src/quiche/quic/core/http/quic_spdy_session.h" 14 15 namespace net { 16 17 // This class is a debug visitor of a quic::QuicSpdySession which logs events 18 // to |net_log| and records histograms. 19 class NET_EXPORT_PRIVATE QuicHttp3Logger : public quic::Http3DebugVisitor { 20 public: 21 explicit QuicHttp3Logger(const NetLogWithSource& net_log); 22 23 QuicHttp3Logger(const QuicHttp3Logger&) = delete; 24 QuicHttp3Logger& operator=(const QuicHttp3Logger&) = delete; 25 26 ~QuicHttp3Logger() override; 27 28 // Implementation of Http3DebugVisitor. 29 void OnControlStreamCreated(quic::QuicStreamId stream_id) override; 30 void OnQpackEncoderStreamCreated(quic::QuicStreamId stream_id) override; 31 void OnQpackDecoderStreamCreated(quic::QuicStreamId stream_id) override; 32 void OnPeerControlStreamCreated(quic::QuicStreamId stream_id) override; 33 void OnPeerQpackEncoderStreamCreated(quic::QuicStreamId stream_id) override; 34 void OnPeerQpackDecoderStreamCreated(quic::QuicStreamId stream_id) override; 35 36 void OnSettingsFrameReceived(const quic::SettingsFrame& frame) override; 37 void OnSettingsFrameResumed(const quic::SettingsFrame& frame) override; 38 void OnGoAwayFrameReceived(const quic::GoAwayFrame& frame) override; 39 void OnPriorityUpdateFrameReceived( 40 const quic::PriorityUpdateFrame& frame) override; 41 42 void OnDataFrameReceived(quic::QuicStreamId stream_id, 43 quic::QuicByteCount payload_length) override; 44 void OnHeadersFrameReceived( 45 quic::QuicStreamId stream_id, 46 quic::QuicByteCount compressed_headers_length) override; 47 void OnHeadersDecoded(quic::QuicStreamId stream_id, 48 quic::QuicHeaderList headers) override; 49 50 void OnUnknownFrameReceived(quic::QuicStreamId stream_id, 51 uint64_t frame_type, 52 quic::QuicByteCount payload_length) override; 53 54 void OnSettingsFrameSent(const quic::SettingsFrame& frame) override; 55 void OnGoAwayFrameSent(quic::QuicStreamId stream_id) override; 56 void OnPriorityUpdateFrameSent( 57 const quic::PriorityUpdateFrame& frame) override; 58 59 void OnDataFrameSent(quic::QuicStreamId stream_id, 60 quic::QuicByteCount payload_length) override; 61 void OnHeadersFrameSent(quic::QuicStreamId stream_id, 62 const quiche::HttpHeaderBlock& header_block) override; 63 64 private: 65 NetLogWithSource net_log_; 66 }; 67 } // namespace net 68 69 #endif // NET_QUIC_QUIC_HTTP3_LOGGER_H_ 70