summaryrefslogtreecommitdiffstats
path: root/net/quic/quic_sent_packet_manager.h
diff options
context:
space:
mode:
authorrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-20 05:55:58 +0000
committerrtenneti@chromium.org <rtenneti@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-20 05:55:58 +0000
commit0ac0c5b12a0dab7e8262c1447955e475dffa64d4 (patch)
tree410dc8bf0475df5be9fa4a03590ba9faba3b021f /net/quic/quic_sent_packet_manager.h
parent24657d1ef1e9dbcee81919ee97aebd4d81febe25 (diff)
downloadchromium_src-0ac0c5b12a0dab7e8262c1447955e475dffa64d4.zip
chromium_src-0ac0c5b12a0dab7e8262c1447955e475dffa64d4.tar.gz
chromium_src-0ac0c5b12a0dab7e8262c1447955e475dffa64d4.tar.bz2
Land Recent QUIC Changes.
Make QuicTestClient report response_complete() when the response is actually complete. Merge internal change: 56678980 Remove retransmission_count from RetransmissionInfo, because it was unused. Merge internal change: 56678610 Deprecating FLAGS_bundle_ack_with_outgoing_packet. Removes a QUIC-specific flag that has been set to true for a while. Merge internal change: 56673783 Remove unnecessary tests from QuicEpollConnectionHelperTests since much of the logic that used to be in the helper has moved directly into the connection. Merge internal change: 56613436 Ensure that delta_time_largest_observed values are non-negative, since they are written to the wire as uints. Provide a better estimate of rtt in QUIC. Merge internal change: 56612513 Change QUIC's max CWND from a flag to a constant. Merge internal change: 56607206 Make SimpleClient report whether headers have been completely received. Testing only. This brings simpleclient to feature parity for ustreamer load testing. Merge internal change: 56543369 QUIC - Sync'ing changes while merging chromium/internal changes. Merge internal change: 56537661 Remove deprecated flag FLAGS_track_retransmission_history. Merge internal change: 56530712 Change PacketDroppingTestWriter::WritePacket to release any packets that should have already been released. Merge internal change: 56496423 Add the QUIC detailed error to the ConnectionClose packet for framing errors. Merge internal change: 56478281 Resurrect QUIC fast-RTO tail drop behavior. More quickly RTO packets if there are only a few packets outstanding. Merge internal change: 56476598 Remove EndToEndTest.NoEarlyHeadersFailureFromClient. This test races a retransmission with a RST_STREAM in a way that is not guaranteed to win. Further, it purports to send a valid request, but when the reset loses the race, it's clear that actually the request is actually not valid. Instead, I've replaced this test with a unit test of QuicSession and in the process tightened up the code to detect QUIC_STREAM_RST_BEFORE_HEADERS_DECOMPRESSED. Improved the ability of QuicSession to detect unrecoverable compression context state. Merge internal change: 56472103 Cleanup WriteBlockedList. * Sanity check the values of priorities passed in to various methods. * Cleanup of the argument types used. * Change GetHighestPriorityWriteBlockedList to not return -1, which is confusing since the priority value is (usually) unsigned. Merge internal change: 56467687 Changes to support internal QuicFasterStatsGatherer class which inherits from QuicAckNotifier::DelegateInterface and FasterStatsGatherer. Each QuicStream owns one of these Gatherers. Whenever the Stream writes data to the wire, it registers the Gatherer to be notified on receipt of ACKs for the write. When the Gatherer has seen ACKs for the full response, it calculates Response Time (RT), and ships off the stats to FasterStats. If the QuicStream is destroyed before the full response has been ACKed, then it transfers ownership of the Gatherer to the QuicSession. The FasterStatsIdleList will check in periodically on these stored Gatherers, and when the full response has been ACKed, the Gatherer will ship off FasterStats and be deleted. Calculate FasterStats RT for QUIC. Merge internal change: 56407485 Add a method to QUIC end-to-end-test's TestParams struct so that when a test fails, the summary includes a human readable description of the configuration. Merge internal change: 56382748 Replace QUIC EndToEndTest.InvalidPriority with a unit tests. The existing end-to-end test is very fragile, and depending the behavior of the sender, may actually crash. Minor change to QUIC priority parsing error detection. Merge internal change: 56375355 R=rch@chromium.org Review URL: https://codereview.chromium.org/76723002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236173 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/quic/quic_sent_packet_manager.h')
-rw-r--r--net/quic/quic_sent_packet_manager.h41
1 files changed, 14 insertions, 27 deletions
diff --git a/net/quic/quic_sent_packet_manager.h b/net/quic/quic_sent_packet_manager.h
index cf4edc9..e6878dd 100644
--- a/net/quic/quic_sent_packet_manager.h
+++ b/net/quic/quic_sent_packet_manager.h
@@ -92,11 +92,6 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager {
// Returns true if |sequence_number| is a retransmission of a packet.
bool IsRetransmission(QuicPacketSequenceNumber sequence_number) const;
- // Returns the number of times the data in the packet |sequence_number|
- // has been transmitted.
- size_t GetRetransmissionCount(
- QuicPacketSequenceNumber sequence_number) const;
-
// Returns true if the non-FEC packet |sequence_number| is unacked.
bool IsUnacked(QuicPacketSequenceNumber sequence_number) const;
@@ -131,8 +126,8 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager {
// Returns true if there are any unacked packets.
bool HasUnackedPackets() const;
- // Returns the number of unacked packets.
- size_t GetNumUnackedPackets() const;
+ // Returns the number of unacked packets which have retransmittable frames.
+ size_t GetNumRetransmittablePackets() const;
// Returns true if there are any unacked FEC packets.
bool HasUnackedFecPackets() const;
@@ -155,32 +150,25 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager {
bool IsPreviousTransmission(QuicPacketSequenceNumber sequence_number) const;
private:
- struct RetransmissionInfo {
- RetransmissionInfo() {}
- explicit RetransmissionInfo(QuicPacketSequenceNumber sequence_number,
- QuicSequenceNumberLength sequence_number_length)
- : sequence_number(sequence_number),
- sequence_number_length(sequence_number_length),
- number_nacks(0),
- number_retransmissions(0) {
+ struct TransmissionInfo {
+ TransmissionInfo() {}
+ TransmissionInfo(RetransmittableFrames* retransmittable_frames,
+ QuicSequenceNumberLength sequence_number_length)
+ : retransmittable_frames(retransmittable_frames),
+ sequence_number_length(sequence_number_length) {
}
- QuicPacketSequenceNumber sequence_number;
+ RetransmittableFrames* retransmittable_frames;
QuicSequenceNumberLength sequence_number_length;
- size_t number_nacks;
- // TODO(ianswett): I believe this is now obsolete, or could at least be
- // changed to a bool.
- size_t number_retransmissions;
};
typedef linked_hash_map<QuicPacketSequenceNumber,
- RetransmittableFrames*> UnackedPacketMap;
+ TransmissionInfo> UnackedPacketMap;
typedef linked_hash_map<QuicPacketSequenceNumber,
QuicTime> UnackedFecPacketMap;
typedef linked_hash_map<QuicPacketSequenceNumber,
TransmissionType> PendingRetransmissionMap;
- typedef base::hash_map<QuicPacketSequenceNumber,
- RetransmissionInfo> RetransmissionMap;
+ typedef base::hash_map<QuicPacketSequenceNumber, size_t> NackMap;
typedef base::hash_map<QuicPacketSequenceNumber, SequenceNumberSet*>
PreviousTransmissionMap;
@@ -228,10 +216,9 @@ class NET_EXPORT_PRIVATE QuicSentPacketManager {
// Pending retransmissions which have not been packetized and sent yet.
PendingRetransmissionMap pending_retransmissions_;
- // Map from sequence number to the retransmission info for a packet.
- // This includes the retransmission timeout, and the NACK count. Only
- // the new transmission of a packet will have entries in this map.
- RetransmissionMap retransmission_map_;
+ // Map from sequence number to the number of nacks for the packet.
+ // Only the most recent transmission of packets are present in this map.
+ NackMap nack_map_;
// Map from sequence number to set of all sequence number that this packet has
// been transmitted as. If a packet has not been retransmitted, it will not