Home | History | Annotate | Download | only in quic
      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 
     23   // QuicPacketGenerator::DebugDelegateInterface
     24   virtual void OnFrameAddedToPacket(const QuicFrame& frame) OVERRIDE;
     25 
     26   // QuicConnectionDebugVisitorInterface
     27   virtual void OnPacketSent(QuicPacketSequenceNumber sequence_number,
     28                             EncryptionLevel level,
     29                             const QuicEncryptedPacket& packet,
     30                             int rv) OVERRIDE;
     31 
     32   virtual void OnPacketReceived(const IPEndPoint& self_address,
     33                                 const IPEndPoint& peer_address,
     34                                 const QuicEncryptedPacket& packet) OVERRIDE;
     35   virtual void OnProtocolVersionMismatch(QuicVersion version) OVERRIDE;
     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_;
     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_;
     64   DISALLOW_COPY_AND_ASSIGN(QuicConnectionLogger);
     65 };
     66 
     67 }  // namespace net
     68 
     69 #endif  // NET_QUIC_QUIC_CONNECTION_LOGGER_H_
     70