Partially convert geolocation IPC to Mojo.
[chromium-blink-merge.git] / net / quic / quic_connection_stats.h
blobc681deae9cc2768a7bbfb24060a57721b30651a1
1 // Copyright 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_STATS_H_
6 #define NET_QUIC_QUIC_CONNECTION_STATS_H_
8 #include <ostream>
10 #include "base/basictypes.h"
11 #include "net/base/net_export.h"
12 #include "net/quic/quic_time.h"
14 namespace net {
15 // Structure to hold stats for a QuicConnection.
16 struct NET_EXPORT_PRIVATE QuicConnectionStats {
17 QuicConnectionStats();
18 ~QuicConnectionStats();
20 NET_EXPORT_PRIVATE friend std::ostream& operator<<(
21 std::ostream& os, const QuicConnectionStats& s);
23 uint64 bytes_sent; // Includes retransmissions, fec.
24 uint32 packets_sent;
25 uint64 stream_bytes_sent; // non-retransmitted bytes sent in a stream frame.
26 uint32 packets_discarded; // Packets serialized and discarded before sending.
28 // These include version negotiation and public reset packets, which do not
29 // have sequence numbers or frame data.
30 uint64 bytes_received; // Includes duplicate data for a stream, fec.
31 uint32 packets_received; // Includes packets which were not processable.
32 uint32 packets_processed; // Excludes packets which were not processable.
33 uint64 stream_bytes_received; // Bytes received in a stream frame.
35 uint64 bytes_retransmitted;
36 uint32 packets_retransmitted;
38 uint64 bytes_spuriously_retransmitted;
39 uint32 packets_spuriously_retransmitted;
40 // Number of packets abandoned as lost by the loss detection algorithm.
41 uint32 packets_lost;
42 uint32 slowstart_packets_lost; // Number of packets lost exiting slow start.
44 uint32 packets_revived;
45 uint32 packets_dropped; // Duplicate or less than least unacked.
46 uint32 crypto_retransmit_count;
47 // Count of times the loss detection alarm fired. At least one packet should
48 // be lost when the alarm fires.
49 uint32 loss_timeout_count;
50 uint32 tlp_count;
51 uint32 rto_count; // Count of times the rto timer fired.
52 uint32 spurious_rto_count;
54 int64 min_rtt_us; // Minimum RTT in microseconds.
55 int64 srtt_us; // Smoothed RTT in microseconds.
56 uint32 max_packet_size; // In bytes.
57 uint64 estimated_bandwidth; // In bytes per second.
58 uint32 congestion_window; // In bytes
59 uint32 slow_start_threshold; // In bytes
61 // Reordering stats for received packets.
62 // Number of packets received out of sequence number order.
63 uint32 packets_reordered;
64 // Maximum reordering observed in sequence space.
65 uint32 max_sequence_reordering;
66 // Maximum reordering observed in microseconds
67 int64 max_time_reordering_us;
69 // The following stats are used only in TcpCubicSender.
70 // The number of loss events from TCP's perspective. Each loss event includes
71 // one or more lost packets.
72 uint32 tcp_loss_events;
73 // Total amount of cwnd increase by TCPCubic in congestion avoidance.
74 uint32 cwnd_increase_congestion_avoidance;
75 // Total amount of cwnd increase by TCPCubic in cubic mode.
76 uint32 cwnd_increase_cubic_mode;
78 // Creation time, as reported by the QuicClock.
79 QuicTime connection_creation_time;
82 } // namespace net
84 #endif // NET_QUIC_QUIC_CONNECTION_STATS_H_