• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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