Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Side by Side Diff: net/quic/quic_protocol.cc

Issue 11820005: Largest received -> largest observed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_protocol.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/quic_protocol.h" 5 #include "net/quic/quic_protocol.h"
6 #include "base/stl_util.h" 6 #include "base/stl_util.h"
7 7
8 using base::StringPiece; 8 using base::StringPiece;
9 using std::map; 9 using std::map;
10 using std::numeric_limits; 10 using std::numeric_limits;
11 using std::ostream; 11 using std::ostream;
12 12
13 namespace net { 13 namespace net {
14 14
15 QuicStreamFrame::QuicStreamFrame() {} 15 QuicStreamFrame::QuicStreamFrame() {}
16 16
17 QuicStreamFrame::QuicStreamFrame(QuicStreamId stream_id, 17 QuicStreamFrame::QuicStreamFrame(QuicStreamId stream_id,
18 bool fin, 18 bool fin,
19 uint64 offset, 19 uint64 offset,
20 StringPiece data) 20 StringPiece data)
21 : stream_id(stream_id), 21 : stream_id(stream_id),
22 fin(fin), 22 fin(fin),
23 offset(offset), 23 offset(offset),
24 data(data) { 24 data(data) {
25 } 25 }
26 26
27 // TODO(ianswett): Initializing largest_received to 0 should not be necessary. 27 // TODO(ianswett): Initializing largest_observed to 0 should not be necessary.
28 ReceivedPacketInfo::ReceivedPacketInfo() : largest_received(0) {} 28 ReceivedPacketInfo::ReceivedPacketInfo() : largest_observed(0) {}
29 29
30 ReceivedPacketInfo::~ReceivedPacketInfo() {} 30 ReceivedPacketInfo::~ReceivedPacketInfo() {}
31 31
32 void ReceivedPacketInfo::RecordReceived( 32 void ReceivedPacketInfo::RecordReceived(
33 QuicPacketSequenceNumber sequence_number) { 33 QuicPacketSequenceNumber sequence_number) {
34 DCHECK(IsAwaitingPacket(sequence_number)); 34 DCHECK(IsAwaitingPacket(sequence_number));
35 if (largest_received < sequence_number) { 35 if (largest_observed < sequence_number) {
36 DCHECK_LT(sequence_number - largest_received, 36 DCHECK_LT(sequence_number - largest_observed,
37 numeric_limits<uint16>::max()); 37 numeric_limits<uint16>::max());
38 // We've got a new high sequence number. Note any new intermediate missing 38 // We've got a new high sequence number. Note any new intermediate missing
39 // packets, and update the last_ack data. 39 // packets, and update the last_ack data.
40 for (QuicPacketSequenceNumber i = largest_received + 1; 40 for (QuicPacketSequenceNumber i = largest_observed + 1;
41 i < sequence_number; ++i) { 41 i < sequence_number; ++i) {
42 DVLOG(1) << "missing " << i; 42 DVLOG(1) << "missing " << i;
43 missing_packets.insert(i); 43 missing_packets.insert(i);
44 } 44 }
45 largest_received = sequence_number; 45 largest_observed = sequence_number;
46 } else { 46 } else {
47 // We've gotten one of the out of order packets - remove it from our 47 // We've gotten one of the out of order packets - remove it from our
48 // "missing packets" list. 48 // "missing packets" list.
49 DVLOG(1) << "Removing " << sequence_number << " from missing list"; 49 DVLOG(1) << "Removing " << sequence_number << " from missing list";
50 missing_packets.erase(sequence_number); 50 missing_packets.erase(sequence_number);
51 } 51 }
52 } 52 }
53 53
54 bool ReceivedPacketInfo::IsAwaitingPacket( 54 bool ReceivedPacketInfo::IsAwaitingPacket(
55 QuicPacketSequenceNumber sequence_number) const { 55 QuicPacketSequenceNumber sequence_number) const {
56 return sequence_number > largest_received || 56 return sequence_number > largest_observed ||
57 ContainsKey(missing_packets, sequence_number); 57 ContainsKey(missing_packets, sequence_number);
58 } 58 }
59 59
60 void ReceivedPacketInfo::ClearMissingBefore( 60 void ReceivedPacketInfo::ClearMissingBefore(
61 QuicPacketSequenceNumber least_unacked) { 61 QuicPacketSequenceNumber least_unacked) {
62 missing_packets.erase(missing_packets.begin(), 62 missing_packets.erase(missing_packets.begin(),
63 missing_packets.lower_bound(least_unacked)); 63 missing_packets.lower_bound(least_unacked));
64 } 64 }
65 65
66 SentPacketInfo::SentPacketInfo() {} 66 SentPacketInfo::SentPacketInfo() {}
67 67
68 SentPacketInfo::~SentPacketInfo() {} 68 SentPacketInfo::~SentPacketInfo() {}
69 69
70 // Testing convenience method. 70 // Testing convenience method.
71 QuicAckFrame::QuicAckFrame(QuicPacketSequenceNumber largest_received, 71 QuicAckFrame::QuicAckFrame(QuicPacketSequenceNumber largest_observed,
72 QuicPacketSequenceNumber least_unacked) { 72 QuicPacketSequenceNumber least_unacked) {
73 for (QuicPacketSequenceNumber seq_num = 1; 73 for (QuicPacketSequenceNumber seq_num = 1;
74 seq_num <= largest_received; ++seq_num) { 74 seq_num <= largest_observed; ++seq_num) {
75 received_info.RecordReceived(seq_num); 75 received_info.RecordReceived(seq_num);
76 } 76 }
77 received_info.largest_received = largest_received; 77 received_info.largest_observed = largest_observed;
78 sent_info.least_unacked = least_unacked; 78 sent_info.least_unacked = least_unacked;
79 } 79 }
80 80
81 ostream& operator<<(ostream& os, const SentPacketInfo& sent_info) { 81 ostream& operator<<(ostream& os, const SentPacketInfo& sent_info) {
82 os << "least_waiting: " << sent_info.least_unacked; 82 os << "least_waiting: " << sent_info.least_unacked;
83 return os; 83 return os;
84 } 84 }
85 85
86 ostream& operator<<(ostream& os, const ReceivedPacketInfo& received_info) { 86 ostream& operator<<(ostream& os, const ReceivedPacketInfo& received_info) {
87 os << "largest_received: " 87 os << "largest_observed: "
88 << received_info.largest_received 88 << received_info.largest_observed
89 << " missing_packets: [ "; 89 << " missing_packets: [ ";
90 for (SequenceSet::const_iterator it = received_info.missing_packets.begin(); 90 for (SequenceSet::const_iterator it = received_info.missing_packets.begin();
91 it != received_info.missing_packets.end(); ++it) { 91 it != received_info.missing_packets.end(); ++it) {
92 os << *it << " "; 92 os << *it << " ";
93 } 93 }
94 os << " ] "; 94 os << " ] ";
95 return os; 95 return os;
96 } 96 }
97 97
98 QuicCongestionFeedbackFrame::QuicCongestionFeedbackFrame() { 98 QuicCongestionFeedbackFrame::QuicCongestionFeedbackFrame() {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 return true; 167 return true;
168 } 168 }
169 169
170 QuicData::~QuicData() { 170 QuicData::~QuicData() {
171 if (owns_buffer_) { 171 if (owns_buffer_) {
172 delete [] const_cast<char*>(buffer_); 172 delete [] const_cast<char*>(buffer_);
173 } 173 }
174 } 174 }
175 175
176 } // namespace net 176 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_protocol.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698