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.
5 #ifndef NET_QUIC_QUIC_CONNECTION_LOGGER_H_
6 #define NET_QUIC_QUIC_CONNECTION_LOGGER_H_
8 #include "net/quic/quic_connection.h"
9 #include "net/quic/quic_protocol.h"
14 class CryptoHandshakeMessage;
16 // This class is a debug visitor of a QuicConnection which logs
17 // events to |net_log|.
18 class NET_EXPORT_PRIVATE QuicConnectionLogger
19 : public QuicConnectionDebugVisitorInterface {
21 explicit QuicConnectionLogger(const BoundNetLog& net_log);
23 virtual ~QuicConnectionLogger();
25 // QuicPacketGenerator::DebugDelegateInterface
26 virtual void OnFrameAddedToPacket(const QuicFrame& frame) OVERRIDE;
28 // QuicConnectionDebugVisitorInterface
29 virtual void OnPacketSent(QuicPacketSequenceNumber sequence_number,
30 EncryptionLevel level,
31 const QuicEncryptedPacket& packet,
32 WriteResult result) OVERRIDE;
33 virtual void OnPacketRetransmitted(
34 QuicPacketSequenceNumber old_sequence_number,
35 QuicPacketSequenceNumber new_sequence_number) OVERRIDE;
36 virtual void OnPacketReceived(const IPEndPoint& self_address,
37 const IPEndPoint& peer_address,
38 const QuicEncryptedPacket& packet) OVERRIDE;
39 virtual void OnProtocolVersionMismatch(QuicVersion version) OVERRIDE;
40 virtual void OnPacketHeader(const QuicPacketHeader& header) OVERRIDE;
41 virtual void OnStreamFrame(const QuicStreamFrame& frame) OVERRIDE;
42 virtual void OnAckFrame(const QuicAckFrame& frame) OVERRIDE;
43 virtual void OnCongestionFeedbackFrame(
44 const QuicCongestionFeedbackFrame& frame) OVERRIDE;
45 virtual void OnRstStreamFrame(const QuicRstStreamFrame& frame) OVERRIDE;
46 virtual void OnConnectionCloseFrame(
47 const QuicConnectionCloseFrame& frame) OVERRIDE;
48 virtual void OnPublicResetPacket(
49 const QuicPublicResetPacket& packet) OVERRIDE;
50 virtual void OnVersionNegotiationPacket(
51 const QuicVersionNegotiationPacket& packet) OVERRIDE;
52 virtual void OnRevivedPacket(const QuicPacketHeader& revived_header,
53 base::StringPiece payload) OVERRIDE;
55 void OnCryptoHandshakeMessageReceived(
56 const CryptoHandshakeMessage& message);
57 void OnCryptoHandshakeMessageSent(
58 const CryptoHandshakeMessage& message);
59 void OnConnectionClosed(QuicErrorCode error, bool from_peer);
60 void OnSuccessfulVersionNegotiation(const QuicVersion& version);
64 // The last packet sequence number received.
65 QuicPacketSequenceNumber last_received_packet_sequence_number_;
66 // The largest packet sequence number received. In case of that a packet is
67 // received late, this value will not be updated.
68 QuicPacketSequenceNumber largest_received_packet_sequence_number_;
69 // The largest packet sequence number which the peer has failed to
70 // receive, according to the missing packet set in their ack frames.
71 QuicPacketSequenceNumber largest_received_missing_packet_sequence_number_;
72 // Number of times that the current received packet sequence number is
73 // smaller than the last received packet sequence number.
74 size_t out_of_order_recieved_packet_count_;
75 DISALLOW_COPY_AND_ASSIGN(QuicConnectionLogger);
80 #endif // NET_QUIC_QUIC_CONNECTION_LOGGER_H_