blob: 1d2bd2df96d7133d098059ed43183077e38bc61d [file] [log] [blame]
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +00001// 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
10namespace net {
11
12class BoundNetLog;
13
14// This class is a debug visitor of a QuicConnection which logs
15// events to |net_log|.
16class NET_EXPORT_PRIVATE QuicConnectionLogger
17 : public QuicConnectionDebugVisitorInterface {
18 public:
19 explicit QuicConnectionLogger(const BoundNetLog& net_log);
20
21 virtual ~QuicConnectionLogger();
22
Ben Murdocheb525c52013-07-10 11:40:50 +010023 // QuicPacketGenerator::DebugDelegateInterface
24 virtual void OnFrameAddedToPacket(const QuicFrame& frame) OVERRIDE;
25
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000026 // QuicConnectionDebugVisitorInterface
Ben Murdocheb525c52013-07-10 11:40:50 +010027 virtual void OnPacketSent(QuicPacketSequenceNumber sequence_number,
28 EncryptionLevel level,
29 const QuicEncryptedPacket& packet,
30 int rv) OVERRIDE;
31
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000032 virtual void OnPacketReceived(const IPEndPoint& self_address,
33 const IPEndPoint& peer_address,
34 const QuicEncryptedPacket& packet) OVERRIDE;
Ben Murdoch558790d2013-07-30 15:19:42 +010035 virtual void OnProtocolVersionMismatch(QuicVersion version) OVERRIDE;
Torne (Richard Coles)2a99a7e2013-03-28 15:31:22 +000036 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 Murdocheb525c52013-07-10 11:40:50 +010053 // 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)2a99a7e2013-03-28 15:31:22 +000064 DISALLOW_COPY_AND_ASSIGN(QuicConnectionLogger);
65};
66
67} // namespace net
68
69#endif // NET_QUIC_QUIC_CONNECTION_LOGGER_H_