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

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

Issue 1330973002: relnote: Refactor QuicAckFrame::missing_packets to support a change to a (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Tidy_up_DLOG_messages_101773586
Patch Set: Created 5 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_framer.h" 5 #include "net/quic/quic_framer.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 966 matching lines...) Expand 10 before | Expand all | Expand 10 after
977 default: 977 default:
978 LOG(DFATAL) << "Unreachable case statement."; 978 LOG(DFATAL) << "Unreachable case statement.";
979 return PACKET_FLAGS_6BYTE_PACKET; 979 return PACKET_FLAGS_6BYTE_PACKET;
980 } 980 }
981 } 981 }
982 982
983 // static 983 // static
984 QuicFramer::AckFrameInfo QuicFramer::GetAckFrameInfo( 984 QuicFramer::AckFrameInfo QuicFramer::GetAckFrameInfo(
985 const QuicAckFrame& frame) { 985 const QuicAckFrame& frame) {
986 AckFrameInfo ack_info; 986 AckFrameInfo ack_info;
987 if (frame.missing_packets.empty()) { 987 if (frame.missing_packets.Empty()) {
988 return ack_info; 988 return ack_info;
989 } 989 }
990 DCHECK_GE(frame.largest_observed, *frame.missing_packets.rbegin()); 990 DCHECK_GE(frame.largest_observed, frame.missing_packets.Max());
991 size_t cur_range_length = 0; 991 size_t cur_range_length = 0;
992 PacketNumberSet::const_iterator iter = frame.missing_packets.begin(); 992 PacketNumberSet::const_iterator iter = frame.missing_packets.begin();
993 QuicPacketNumber last_missing = *iter; 993 QuicPacketNumber last_missing = *iter;
994 ++iter; 994 ++iter;
995 for (; iter != frame.missing_packets.end(); ++iter) { 995 for (; iter != frame.missing_packets.end(); ++iter) {
996 if (cur_range_length < numeric_limits<uint8>::max() && 996 if (cur_range_length < numeric_limits<uint8>::max() &&
997 *iter == (last_missing + 1)) { 997 *iter == (last_missing + 1)) {
998 ++cur_range_length; 998 ++cur_range_length;
999 } else { 999 } else {
1000 ack_info.nack_ranges[last_missing - cur_range_length] = 1000 ack_info.nack_ranges[last_missing - cur_range_length] =
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
1354 if (!reader->ReadBytes(&missing_delta, missing_packet_number_length)) { 1354 if (!reader->ReadBytes(&missing_delta, missing_packet_number_length)) {
1355 set_detailed_error("Unable to read missing packet number delta."); 1355 set_detailed_error("Unable to read missing packet number delta.");
1356 return false; 1356 return false;
1357 } 1357 }
1358 last_packet_number -= missing_delta; 1358 last_packet_number -= missing_delta;
1359 QuicPacketNumber range_length = 0; 1359 QuicPacketNumber range_length = 0;
1360 if (!reader->ReadBytes(&range_length, PACKET_1BYTE_PACKET_NUMBER)) { 1360 if (!reader->ReadBytes(&range_length, PACKET_1BYTE_PACKET_NUMBER)) {
1361 set_detailed_error("Unable to read missing packet number range."); 1361 set_detailed_error("Unable to read missing packet number range.");
1362 return false; 1362 return false;
1363 } 1363 }
1364 for (size_t j = 0; j <= range_length; ++j) { 1364 ack_frame->missing_packets.Add(last_packet_number - range_length,
1365 ack_frame->missing_packets.insert(last_packet_number - j); 1365 last_packet_number + 1);
1366 }
1367 // Subtract an extra 1 to ensure ranges are represented efficiently and 1366 // Subtract an extra 1 to ensure ranges are represented efficiently and
1368 // can't overlap by 1 packet number. This allows a missing_delta of 0 1367 // can't overlap by 1 packet number. This allows a missing_delta of 0
1369 // to represent an adjacent nack range. 1368 // to represent an adjacent nack range.
1370 last_packet_number -= (range_length + 1); 1369 last_packet_number -= (range_length + 1);
1371 } 1370 }
1372 1371
1373 // Parse the revived packets list. 1372 // Parse the revived packets list.
1374 uint8 num_revived_packets; 1373 uint8 num_revived_packets;
1375 if (!reader->ReadBytes(&num_revived_packets, 1)) { 1374 if (!reader->ReadBytes(&num_revived_packets, 1)) {
1376 set_detailed_error("Unable to read num revived packets."); 1375 set_detailed_error("Unable to read num revived packets.");
(...skipping 679 matching lines...) Expand 10 before | Expand all | Expand 10 after
2056 static_cast<uint8>(min(frame.revived_packets.size(), kMaxRevivedPackets)); 2055 static_cast<uint8>(min(frame.revived_packets.size(), kMaxRevivedPackets));
2057 num_revived_packets = static_cast<uint8>(min( 2056 num_revived_packets = static_cast<uint8>(min(
2058 static_cast<size_t>(num_revived_packets), 2057 static_cast<size_t>(num_revived_packets),
2059 (writer->capacity() - writer->length()) / largest_observed_length)); 2058 (writer->capacity() - writer->length()) / largest_observed_length));
2060 if (!writer->WriteBytes(&num_revived_packets, 1)) { 2059 if (!writer->WriteBytes(&num_revived_packets, 1)) {
2061 return false; 2060 return false;
2062 } 2061 }
2063 2062
2064 PacketNumberSet::const_iterator iter = frame.revived_packets.begin(); 2063 PacketNumberSet::const_iterator iter = frame.revived_packets.begin();
2065 for (int i = 0; i < num_revived_packets; ++i, ++iter) { 2064 for (int i = 0; i < num_revived_packets; ++i, ++iter) {
2066 LOG_IF(DFATAL, !ContainsKey(frame.missing_packets, *iter)); 2065 LOG_IF(DFATAL, !frame.missing_packets.Contains(*iter));
2067 if (!AppendPacketSequenceNumber(largest_observed_length, 2066 if (!AppendPacketSequenceNumber(largest_observed_length,
2068 *iter, writer)) { 2067 *iter, writer)) {
2069 return false; 2068 return false;
2070 } 2069 }
2071 } 2070 }
2072 2071
2073 return true; 2072 return true;
2074 } 2073 }
2075 2074
2076 bool QuicFramer::AppendTimestampToAckFrame(const QuicAckFrame& frame, 2075 bool QuicFramer::AppendTimestampToAckFrame(const QuicAckFrame& frame,
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
2244 2243
2245 bool QuicFramer::RaiseError(QuicErrorCode error) { 2244 bool QuicFramer::RaiseError(QuicErrorCode error) {
2246 DVLOG(1) << "Error: " << QuicUtils::ErrorToString(error) 2245 DVLOG(1) << "Error: " << QuicUtils::ErrorToString(error)
2247 << " detail: " << detailed_error_; 2246 << " detail: " << detailed_error_;
2248 set_error(error); 2247 set_error(error);
2249 visitor_->OnError(this); 2248 visitor_->OnError(this);
2250 return false; 2249 return false;
2251 } 2250 }
2252 2251
2253 } // namespace net 2252 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698