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