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