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

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

Issue 478153003: Change the wire format of the ack frame to include a compressed version (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
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 6
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "net/quic/quic_utils.h" 8 #include "net/quic/quic_utils.h"
9 9
10 using base::StringPiece; 10 using base::StringPiece;
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 case QUIC_VERSION_18: 164 case QUIC_VERSION_18:
165 return MakeQuicTag('Q', '0', '1', '8'); 165 return MakeQuicTag('Q', '0', '1', '8');
166 case QUIC_VERSION_19: 166 case QUIC_VERSION_19:
167 return MakeQuicTag('Q', '0', '1', '9'); 167 return MakeQuicTag('Q', '0', '1', '9');
168 case QUIC_VERSION_20: 168 case QUIC_VERSION_20:
169 return MakeQuicTag('Q', '0', '2', '0'); 169 return MakeQuicTag('Q', '0', '2', '0');
170 case QUIC_VERSION_21: 170 case QUIC_VERSION_21:
171 return MakeQuicTag('Q', '0', '2', '1'); 171 return MakeQuicTag('Q', '0', '2', '1');
172 case QUIC_VERSION_22: 172 case QUIC_VERSION_22:
173 return MakeQuicTag('Q', '0', '2', '2'); 173 return MakeQuicTag('Q', '0', '2', '2');
174 case QUIC_VERSION_23:
175 return MakeQuicTag('Q', '0', '2', '3');
174 default: 176 default:
175 // This shold be an ERROR because we should never attempt to convert an 177 // This shold be an ERROR because we should never attempt to convert an
176 // invalid QuicVersion to be written to the wire. 178 // invalid QuicVersion to be written to the wire.
177 LOG(ERROR) << "Unsupported QuicVersion: " << version; 179 LOG(ERROR) << "Unsupported QuicVersion: " << version;
178 return 0; 180 return 0;
179 } 181 }
180 } 182 }
181 183
182 QuicVersion QuicTagToQuicVersion(const QuicTag version_tag) { 184 QuicVersion QuicTagToQuicVersion(const QuicTag version_tag) {
183 for (size_t i = 0; i < arraysize(kSupportedQuicVersions); ++i) { 185 for (size_t i = 0; i < arraysize(kSupportedQuicVersions); ++i) {
(...skipping 12 matching lines...) Expand all
196 return #x 198 return #x
197 199
198 string QuicVersionToString(const QuicVersion version) { 200 string QuicVersionToString(const QuicVersion version) {
199 switch (version) { 201 switch (version) {
200 RETURN_STRING_LITERAL(QUIC_VERSION_16); 202 RETURN_STRING_LITERAL(QUIC_VERSION_16);
201 RETURN_STRING_LITERAL(QUIC_VERSION_18); 203 RETURN_STRING_LITERAL(QUIC_VERSION_18);
202 RETURN_STRING_LITERAL(QUIC_VERSION_19); 204 RETURN_STRING_LITERAL(QUIC_VERSION_19);
203 RETURN_STRING_LITERAL(QUIC_VERSION_20); 205 RETURN_STRING_LITERAL(QUIC_VERSION_20);
204 RETURN_STRING_LITERAL(QUIC_VERSION_21); 206 RETURN_STRING_LITERAL(QUIC_VERSION_21);
205 RETURN_STRING_LITERAL(QUIC_VERSION_22); 207 RETURN_STRING_LITERAL(QUIC_VERSION_22);
208 RETURN_STRING_LITERAL(QUIC_VERSION_23);
206 default: 209 default:
207 return "QUIC_VERSION_UNSUPPORTED"; 210 return "QUIC_VERSION_UNSUPPORTED";
208 } 211 }
209 } 212 }
210 213
211 string QuicVersionVectorToString(const QuicVersionVector& versions) { 214 string QuicVersionVectorToString(const QuicVersionVector& versions) {
212 string result = ""; 215 string result = "";
213 for (size_t i = 0; i < versions.size(); ++i) { 216 for (size_t i = 0; i < versions.size(); ++i) {
214 if (i != 0) { 217 if (i != 0) {
215 result.append(","); 218 result.append(",");
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 largest_observed(0), 270 largest_observed(0),
268 delta_time_largest_observed(QuicTime::Delta::Infinite()), 271 delta_time_largest_observed(QuicTime::Delta::Infinite()),
269 is_truncated(false) {} 272 is_truncated(false) {}
270 273
271 QuicAckFrame::~QuicAckFrame() {} 274 QuicAckFrame::~QuicAckFrame() {}
272 275
273 CongestionFeedbackMessageTCP::CongestionFeedbackMessageTCP() 276 CongestionFeedbackMessageTCP::CongestionFeedbackMessageTCP()
274 : receive_window(0) { 277 : receive_window(0) {
275 } 278 }
276 279
277 CongestionFeedbackMessageTimestamp::CongestionFeedbackMessageTimestamp() {
278 }
279
280 CongestionFeedbackMessageTimestamp::~CongestionFeedbackMessageTimestamp() {}
281
282 QuicCongestionFeedbackFrame::QuicCongestionFeedbackFrame() : type(kTCP) {} 280 QuicCongestionFeedbackFrame::QuicCongestionFeedbackFrame() : type(kTCP) {}
283 281
284 QuicCongestionFeedbackFrame::~QuicCongestionFeedbackFrame() {} 282 QuicCongestionFeedbackFrame::~QuicCongestionFeedbackFrame() {}
285 283
286 QuicRstStreamErrorCode AdjustErrorForVersion( 284 QuicRstStreamErrorCode AdjustErrorForVersion(
287 QuicRstStreamErrorCode error_code, 285 QuicRstStreamErrorCode error_code,
288 QuicVersion version) { 286 QuicVersion version) {
289 switch (error_code) { 287 switch (error_code) {
290 case QUIC_RST_FLOW_CONTROL_ACCOUNTING: 288 case QUIC_RST_FLOW_CONTROL_ACCOUNTING:
291 if (version < QUIC_VERSION_18) { 289 if (version < QUIC_VERSION_18) {
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 QuicFecData::QuicFecData() : fec_group(0) {} 374 QuicFecData::QuicFecData() : fec_group(0) {}
377 375
378 ostream& operator<<(ostream& os, const QuicStopWaitingFrame& sent_info) { 376 ostream& operator<<(ostream& os, const QuicStopWaitingFrame& sent_info) {
379 os << "entropy_hash: " << static_cast<int>(sent_info.entropy_hash) 377 os << "entropy_hash: " << static_cast<int>(sent_info.entropy_hash)
380 << " least_unacked: " << sent_info.least_unacked; 378 << " least_unacked: " << sent_info.least_unacked;
381 return os; 379 return os;
382 } 380 }
383 381
384 ostream& operator<<(ostream& os, const QuicAckFrame& ack_frame) { 382 ostream& operator<<(ostream& os, const QuicAckFrame& ack_frame) {
385 os << "entropy_hash: " << static_cast<int>(ack_frame.entropy_hash) 383 os << "entropy_hash: " << static_cast<int>(ack_frame.entropy_hash)
386 << " is_truncated: " << ack_frame.is_truncated
387 << " largest_observed: " << ack_frame.largest_observed 384 << " largest_observed: " << ack_frame.largest_observed
388 << " delta_time_largest_observed: " 385 << " delta_time_largest_observed: "
389 << ack_frame.delta_time_largest_observed.ToMicroseconds() 386 << ack_frame.delta_time_largest_observed.ToMicroseconds()
390 << " missing_packets: [ "; 387 << " missing_packets: [ ";
391 for (SequenceNumberSet::const_iterator it = ack_frame.missing_packets.begin(); 388 for (SequenceNumberSet::const_iterator it = ack_frame.missing_packets.begin();
392 it != ack_frame.missing_packets.end(); ++it) { 389 it != ack_frame.missing_packets.end(); ++it) {
393 os << *it << " "; 390 os << *it << " ";
394 } 391 }
395 os << " ] revived_packets: [ "; 392 os << " ] is_truncated: " << ack_frame.is_truncated;
ramant (doing other things) 2014/08/23 23:55:29 minor change to print the data in the same order a
393 os << " revived_packets: [ ";
396 for (SequenceNumberSet::const_iterator it = ack_frame.revived_packets.begin(); 394 for (SequenceNumberSet::const_iterator it = ack_frame.revived_packets.begin();
397 it != ack_frame.revived_packets.end(); ++it) { 395 it != ack_frame.revived_packets.end(); ++it) {
398 os << *it << " "; 396 os << *it << " ";
399 } 397 }
398 os << " ] received_packets: [ ";
399 for (PacketTimeList::const_iterator it =
400 ack_frame.received_packet_times.begin();
401 it != ack_frame.received_packet_times.end(); ++it) {
402 os << it->first << " at " << it->second.ToDebuggingValue() << " ";
403 }
400 os << " ]"; 404 os << " ]";
401 return os; 405 return os;
402 } 406 }
403 407
404 ostream& operator<<(ostream& os, const QuicFrame& frame) { 408 ostream& operator<<(ostream& os, const QuicFrame& frame) {
405 switch (frame.type) { 409 switch (frame.type) {
406 case PADDING_FRAME: { 410 case PADDING_FRAME: {
407 os << "type { PADDING_FRAME } "; 411 os << "type { PADDING_FRAME } ";
408 break; 412 break;
409 } 413 }
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 << "data { " 501 << "data { "
498 << QuicUtils::StringToHexASCIIDump(*(stream_frame.GetDataAsString())) 502 << QuicUtils::StringToHexASCIIDump(*(stream_frame.GetDataAsString()))
499 << " }\n"; 503 << " }\n";
500 return os; 504 return os;
501 } 505 }
502 506
503 ostream& operator<<(ostream& os, 507 ostream& operator<<(ostream& os,
504 const QuicCongestionFeedbackFrame& congestion_frame) { 508 const QuicCongestionFeedbackFrame& congestion_frame) {
505 os << "type: " << congestion_frame.type; 509 os << "type: " << congestion_frame.type;
506 switch (congestion_frame.type) { 510 switch (congestion_frame.type) {
507 case kTimestamp: {
508 const CongestionFeedbackMessageTimestamp& timestamp =
509 congestion_frame.timestamp;
510 os << " received packets: [ ";
511 for (TimeMap::const_iterator it = timestamp.received_packet_times.begin();
512 it != timestamp.received_packet_times.end(); ++it) {
513 os << it->first << "@" << it->second.ToDebuggingValue() << " ";
514 }
515 os << "]";
516 break;
517 }
518 case kTCP: { 511 case kTCP: {
519 const CongestionFeedbackMessageTCP& tcp = congestion_frame.tcp; 512 const CongestionFeedbackMessageTCP& tcp = congestion_frame.tcp;
520 os << " receive_window: " << tcp.receive_window; 513 os << " receive_window: " << tcp.receive_window;
521 break; 514 break;
522 } 515 }
523 } 516 }
524 return os; 517 return os;
525 } 518 }
526 519
527 QuicGoAwayFrame::QuicGoAwayFrame() 520 QuicGoAwayFrame::QuicGoAwayFrame()
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 sent_time(QuicTime::Zero()), 750 sent_time(QuicTime::Zero()),
758 bytes_sent(0), 751 bytes_sent(0),
759 nack_count(0), 752 nack_count(0),
760 transmission_type(transmission_type), 753 transmission_type(transmission_type),
761 all_transmissions(all_transmissions), 754 all_transmissions(all_transmissions),
762 in_flight(false) { 755 in_flight(false) {
763 all_transmissions->insert(sequence_number); 756 all_transmissions->insert(sequence_number);
764 } 757 }
765 758
766 } // namespace net 759 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698