Torne (Richard Coles) | 2a99a7e | 2013-03-28 15:31:22 +0000 | [diff] [blame] | 1 | // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 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_CONNECTION_LOGGER_H_ |
| 6 | #define NET_QUIC_QUIC_CONNECTION_LOGGER_H_ |
| 7 | |
| 8 | #include "net/quic/quic_connection.h" |
| 9 | |
| 10 | namespace net { |
| 11 | |
| 12 | class BoundNetLog; |
| 13 | |
| 14 | // This class is a debug visitor of a QuicConnection which logs |
| 15 | // events to |net_log|. |
| 16 | class NET_EXPORT_PRIVATE QuicConnectionLogger |
| 17 | : public QuicConnectionDebugVisitorInterface { |
| 18 | public: |
| 19 | explicit QuicConnectionLogger(const BoundNetLog& net_log); |
| 20 | |
| 21 | virtual ~QuicConnectionLogger(); |
| 22 | |
Ben Murdoch | eb525c5 | 2013-07-10 11:40:50 +0100 | [diff] [blame] | 23 | // QuicPacketGenerator::DebugDelegateInterface |
| 24 | virtual void OnFrameAddedToPacket(const QuicFrame& frame) OVERRIDE; |
| 25 | |
Torne (Richard Coles) | 2a99a7e | 2013-03-28 15:31:22 +0000 | [diff] [blame] | 26 | // QuicConnectionDebugVisitorInterface |
Ben Murdoch | eb525c5 | 2013-07-10 11:40:50 +0100 | [diff] [blame] | 27 | virtual void OnPacketSent(QuicPacketSequenceNumber sequence_number, |
| 28 | EncryptionLevel level, |
| 29 | const QuicEncryptedPacket& packet, |
| 30 | int rv) OVERRIDE; |
| 31 | |
Torne (Richard Coles) | 2a99a7e | 2013-03-28 15:31:22 +0000 | [diff] [blame] | 32 | virtual void OnPacketReceived(const IPEndPoint& self_address, |
| 33 | const IPEndPoint& peer_address, |
| 34 | const QuicEncryptedPacket& packet) OVERRIDE; |
Ben Murdoch | 558790d | 2013-07-30 15:19:42 +0100 | [diff] [blame^] | 35 | virtual void OnProtocolVersionMismatch(QuicVersion version) OVERRIDE; |
Torne (Richard Coles) | 2a99a7e | 2013-03-28 15:31:22 +0000 | [diff] [blame] | 36 | virtual void OnPacketHeader(const QuicPacketHeader& header) OVERRIDE; |
| 37 | virtual void OnStreamFrame(const QuicStreamFrame& frame) OVERRIDE; |
| 38 | virtual void OnAckFrame(const QuicAckFrame& frame) OVERRIDE; |
| 39 | virtual void OnCongestionFeedbackFrame( |
| 40 | const QuicCongestionFeedbackFrame& frame) OVERRIDE; |
| 41 | virtual void OnRstStreamFrame(const QuicRstStreamFrame& frame) OVERRIDE; |
| 42 | virtual void OnConnectionCloseFrame( |
| 43 | const QuicConnectionCloseFrame& frame) OVERRIDE; |
| 44 | virtual void OnPublicResetPacket( |
| 45 | const QuicPublicResetPacket& packet) OVERRIDE; |
| 46 | virtual void OnVersionNegotiationPacket( |
| 47 | const QuicVersionNegotiationPacket& packet) OVERRIDE; |
| 48 | virtual void OnRevivedPacket(const QuicPacketHeader& revived_header, |
| 49 | base::StringPiece payload) OVERRIDE; |
| 50 | |
| 51 | private: |
| 52 | BoundNetLog net_log_; |
Ben Murdoch | eb525c5 | 2013-07-10 11:40:50 +0100 | [diff] [blame] | 53 | // The last packet sequence number received. |
| 54 | QuicPacketSequenceNumber last_received_packet_sequence_number_; |
| 55 | // The largest packet sequence number received. In case of that a packet is |
| 56 | // received late, this value will not be updated. |
| 57 | QuicPacketSequenceNumber largest_received_packet_sequence_number_; |
| 58 | // The largest packet sequence number which the peer has failed to |
| 59 | // receive, according to the missing packet set in their ack frames. |
| 60 | QuicPacketSequenceNumber largest_received_missing_packet_sequence_number_; |
| 61 | // Number of times that the current received packet sequence number is |
| 62 | // smaller than the last received packet sequence number. |
| 63 | size_t out_of_order_recieved_packet_count_; |
Torne (Richard Coles) | 2a99a7e | 2013-03-28 15:31:22 +0000 | [diff] [blame] | 64 | DISALLOW_COPY_AND_ASSIGN(QuicConnectionLogger); |
| 65 | }; |
| 66 | |
| 67 | } // namespace net |
| 68 | |
| 69 | #endif // NET_QUIC_QUIC_CONNECTION_LOGGER_H_ |