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

Unified Diff: net/quic/quic_framer.cc

Issue 424003002: Inline the members of QUIC's ReceivedPacketInfo into QuicAckFrame now (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@remove_FixRate_congestion_type_71746617
Patch Set: Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/quic_framer.h ('k') | net/quic/quic_framer_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_framer.cc
diff --git a/net/quic/quic_framer.cc b/net/quic/quic_framer.cc
index c0d423dea62b43011c8cc23b0157af4fd5c04ba7..2ef5c7fbdf1d8390ddc3d1d0e72ffe44a84df42b 100644
--- a/net/quic/quic_framer.cc
+++ b/net/quic/quic_framer.cc
@@ -132,12 +132,10 @@ QuicSequenceNumberLength ReadSequenceNumberLength(uint8 flags) {
}
}
-bool CanTruncate(
- QuicVersion version, const QuicFrame& frame, size_t free_bytes) {
+bool CanTruncate(const QuicFrame& frame, size_t free_bytes) {
if ((frame.type == ACK_FRAME || frame.type == CONNECTION_CLOSE_FRAME) &&
free_bytes >=
- QuicFramer::GetMinAckFrameSize(version,
- PACKET_6BYTE_SEQUENCE_NUMBER,
+ QuicFramer::GetMinAckFrameSize(PACKET_6BYTE_SEQUENCE_NUMBER,
PACKET_6BYTE_SEQUENCE_NUMBER)) {
return true;
}
@@ -181,8 +179,7 @@ QuicFramer::QuicFramer(const QuicVersionVector& supported_versions,
QuicFramer::~QuicFramer() {}
// static
-size_t QuicFramer::GetMinStreamFrameSize(QuicVersion version,
- QuicStreamId stream_id,
+size_t QuicFramer::GetMinStreamFrameSize(QuicStreamId stream_id,
QuicStreamOffset offset,
bool last_frame_in_packet,
InFecGroup is_in_fec_group) {
@@ -195,7 +192,6 @@ size_t QuicFramer::GetMinStreamFrameSize(QuicVersion version,
// static
size_t QuicFramer::GetMinAckFrameSize(
- QuicVersion version,
QuicSequenceNumberLength sequence_number_length,
QuicSequenceNumberLength largest_observed_length) {
return kQuicFrameTypeSize + kQuicEntropyHashSize +
@@ -210,7 +206,7 @@ size_t QuicFramer::GetStopWaitingFrameSize(
}
// static
-size_t QuicFramer::GetMinRstStreamFrameSize(QuicVersion quic_version) {
+size_t QuicFramer::GetMinRstStreamFrameSize() {
return kQuicFrameTypeSize + kQuicMaxStreamIdSize +
kQuicMaxStreamOffsetSize + kQuicErrorCodeSize +
kQuicErrorDetailsLengthSize;
@@ -306,7 +302,7 @@ size_t QuicFramer::GetSerializedFrameLength(
if (!first_frame) {
return 0;
}
- if (CanTruncate(quic_version_, frame, free_bytes)) {
+ if (CanTruncate(frame, free_bytes)) {
// Truncate the frame so the packet will not exceed kMaxPacketSize.
// Note that we may not use every byte of the writer in this case.
DVLOG(1) << "Truncating large frame, free bytes: " << free_bytes;
@@ -385,7 +381,7 @@ SerializedPacket QuicFramer::BuildDataPacket(
}
break;
case PING_FRAME:
- if (quic_version_ <= QUIC_VERSION_16) {
+ if (quic_version_ == QUIC_VERSION_16) {
LOG(DFATAL) << "Attempt to add a PingFrame in "
<< QuicVersionToString(quic_version_);
return kNoPacket;
@@ -967,18 +963,14 @@ uint8 QuicFramer::GetSequenceNumberFlags(
// static
QuicFramer::AckFrameInfo QuicFramer::GetAckFrameInfo(
const QuicAckFrame& frame) {
- const ReceivedPacketInfo& received_info = frame.received_info;
-
AckFrameInfo ack_info;
- if (!received_info.missing_packets.empty()) {
- DCHECK_GE(received_info.largest_observed,
- *received_info.missing_packets.rbegin());
+ if (!frame.missing_packets.empty()) {
+ DCHECK_GE(frame.largest_observed, *frame.missing_packets.rbegin());
size_t cur_range_length = 0;
- SequenceNumberSet::const_iterator iter =
- received_info.missing_packets.begin();
+ SequenceNumberSet::const_iterator iter = frame.missing_packets.begin();
QuicPacketSequenceNumber last_missing = *iter;
++iter;
- for (; iter != received_info.missing_packets.end(); ++iter) {
+ for (; iter != frame.missing_packets.end(); ++iter) {
if (cur_range_length != numeric_limits<uint8>::max() &&
*iter == (last_missing + 1)) {
++cur_range_length;
@@ -994,7 +986,7 @@ QuicFramer::AckFrameInfo QuicFramer::GetAckFrameInfo(
ack_info.nack_ranges[last_missing - cur_range_length] = cur_range_length;
// Include the range to the largest observed.
ack_info.max_delta = max(ack_info.max_delta,
- received_info.largest_observed - last_missing);
+ frame.largest_observed - last_missing);
}
return ack_info;
}
@@ -1105,7 +1097,7 @@ bool QuicFramer::ProcessFrameData(const QuicPacketHeader& header) {
// Ack Frame
if (frame_type & kQuicFrameTypeAckMask) {
QuicAckFrame frame;
- if (!ProcessAckFrame(header, frame_type, &frame)) {
+ if (!ProcessAckFrame(frame_type, &frame)) {
return RaiseError(QUIC_INVALID_ACK_DATA);
}
if (!visitor_->OnAckFrame(frame)) {
@@ -1222,7 +1214,7 @@ bool QuicFramer::ProcessFrameData(const QuicPacketHeader& header) {
continue;
}
case PING_FRAME: {
- if (quic_version_ <= QUIC_VERSION_16) {
+ if (quic_version_ == QUIC_VERSION_16) {
LOG(DFATAL) << "Trying to read a Ping in "
<< QuicVersionToString(quic_version_);
return RaiseError(QUIC_INTERNAL_ERROR);
@@ -1304,17 +1296,7 @@ bool QuicFramer::ProcessStreamFrame(uint8 frame_type,
return true;
}
-bool QuicFramer::ProcessAckFrame(const QuicPacketHeader& header,
- uint8 frame_type,
- QuicAckFrame* frame) {
- if (!ProcessReceivedInfo(frame_type, &frame->received_info)) {
- return false;
- }
- return true;
-}
-
-bool QuicFramer::ProcessReceivedInfo(uint8 frame_type,
- ReceivedPacketInfo* received_info) {
+bool QuicFramer::ProcessAckFrame(uint8 frame_type, QuicAckFrame* ack_frame) {
// Determine the three lengths from the frame type: largest observed length,
// missing sequence number length, and missing range length.
const QuicSequenceNumberLength missing_sequence_number_length =
@@ -1323,16 +1305,16 @@ bool QuicFramer::ProcessReceivedInfo(uint8 frame_type,
const QuicSequenceNumberLength largest_observed_sequence_number_length =
ReadSequenceNumberLength(frame_type);
frame_type >>= kQuicSequenceNumberLengthShift;
- received_info->is_truncated = frame_type & kQuicAckTruncatedMask;
+ ack_frame->is_truncated = frame_type & kQuicAckTruncatedMask;
frame_type >>= kQuicAckTruncatedShift;
bool has_nacks = frame_type & kQuicHasNacksMask;
- if (!reader_->ReadBytes(&received_info->entropy_hash, 1)) {
+ if (!reader_->ReadBytes(&ack_frame->entropy_hash, 1)) {
set_detailed_error("Unable to read entropy hash for received packets.");
return false;
}
- if (!reader_->ReadBytes(&received_info->largest_observed,
+ if (!reader_->ReadBytes(&ack_frame->largest_observed,
largest_observed_sequence_number_length)) {
set_detailed_error("Unable to read largest observed.");
return false;
@@ -1345,9 +1327,9 @@ bool QuicFramer::ProcessReceivedInfo(uint8 frame_type,
}
if (delta_time_largest_observed_us == kUFloat16MaxValue) {
- received_info->delta_time_largest_observed = QuicTime::Delta::Infinite();
+ ack_frame->delta_time_largest_observed = QuicTime::Delta::Infinite();
} else {
- received_info->delta_time_largest_observed =
+ ack_frame->delta_time_largest_observed =
QuicTime::Delta::FromMicroseconds(delta_time_largest_observed_us);
}
@@ -1361,8 +1343,7 @@ bool QuicFramer::ProcessReceivedInfo(uint8 frame_type,
return false;
}
- QuicPacketSequenceNumber last_sequence_number =
- received_info->largest_observed;
+ QuicPacketSequenceNumber last_sequence_number = ack_frame->largest_observed;
for (size_t i = 0; i < num_missing_ranges; ++i) {
QuicPacketSequenceNumber missing_delta = 0;
if (!reader_->ReadBytes(&missing_delta, missing_sequence_number_length)) {
@@ -1376,7 +1357,7 @@ bool QuicFramer::ProcessReceivedInfo(uint8 frame_type,
return false;
}
for (size_t i = 0; i <= range_length; ++i) {
- received_info->missing_packets.insert(last_sequence_number - i);
+ ack_frame->missing_packets.insert(last_sequence_number - i);
}
// Subtract an extra 1 to ensure ranges are represented efficiently and
// can't overlap by 1 sequence number. This allows a missing_delta of 0
@@ -1399,7 +1380,7 @@ bool QuicFramer::ProcessReceivedInfo(uint8 frame_type,
return false;
}
- received_info->revived_packets.insert(revived_packet);
+ ack_frame->revived_packets.insert(revived_packet);
}
return true;
@@ -1769,18 +1750,17 @@ size_t QuicFramer::GetAckFrameSize(
QuicSequenceNumberLength sequence_number_length) {
AckFrameInfo ack_info = GetAckFrameInfo(ack);
QuicSequenceNumberLength largest_observed_length =
- GetMinSequenceNumberLength(ack.received_info.largest_observed);
+ GetMinSequenceNumberLength(ack.largest_observed);
QuicSequenceNumberLength missing_sequence_number_length =
GetMinSequenceNumberLength(ack_info.max_delta);
- size_t ack_size = GetMinAckFrameSize(quic_version_,
- sequence_number_length,
+ size_t ack_size = GetMinAckFrameSize(sequence_number_length,
largest_observed_length);
if (!ack_info.nack_ranges.empty()) {
ack_size += kNumberOfNackRangesSize + kNumberOfRevivedPacketsSize;
ack_size += min(ack_info.nack_ranges.size(), kMaxNackRanges) *
(missing_sequence_number_length + PACKET_1BYTE_SEQUENCE_NUMBER);
- ack_size += min(ack.received_info.revived_packets.size(),
+ ack_size += min(ack.revived_packets.size(),
kMaxRevivedPackets) * largest_observed_length;
}
return ack_size;
@@ -1793,8 +1773,7 @@ size_t QuicFramer::ComputeFrameLength(
QuicSequenceNumberLength sequence_number_length) {
switch (frame.type) {
case STREAM_FRAME:
- return GetMinStreamFrameSize(quic_version_,
- frame.stream_frame->stream_id,
+ return GetMinStreamFrameSize(frame.stream_frame->stream_id,
frame.stream_frame->offset,
last_frame_in_packet,
is_in_fec_group) +
@@ -1838,7 +1817,7 @@ size_t QuicFramer::ComputeFrameLength(
// Ping has no payload.
return kQuicFrameTypeSize;
case RST_STREAM_FRAME:
- return GetMinRstStreamFrameSize(quic_version_) +
+ return GetMinRstStreamFrameSize() +
frame.rst_stream_frame->error_details.size();
case CONNECTION_CLOSE_FRAME:
return GetMinConnectionCloseFrameSize() +
@@ -1976,8 +1955,7 @@ bool QuicFramer::AppendAckFrameAndTypeByte(
const QuicAckFrame& frame,
QuicDataWriter* writer) {
AckFrameInfo ack_info = GetAckFrameInfo(frame);
- QuicPacketSequenceNumber ack_largest_observed =
- frame.received_info.largest_observed;
+ QuicPacketSequenceNumber ack_largest_observed = frame.largest_observed;
QuicSequenceNumberLength largest_observed_length =
GetMinSequenceNumberLength(ack_largest_observed);
QuicSequenceNumberLength missing_sequence_number_length =
@@ -1985,8 +1963,7 @@ bool QuicFramer::AppendAckFrameAndTypeByte(
// Determine whether we need to truncate ranges.
size_t available_range_bytes = writer->capacity() - writer->length() -
kNumberOfRevivedPacketsSize - kNumberOfNackRangesSize -
- GetMinAckFrameSize(quic_version_,
- header.public_header.sequence_number_length,
+ GetMinAckFrameSize(header.public_header.sequence_number_length,
largest_observed_length);
size_t max_num_ranges = available_range_bytes /
(missing_sequence_number_length + PACKET_1BYTE_SEQUENCE_NUMBER);
@@ -2018,8 +1995,7 @@ bool QuicFramer::AppendAckFrameAndTypeByte(
return false;
}
- const ReceivedPacketInfo& received_info = frame.received_info;
- QuicPacketEntropyHash ack_entropy_hash = received_info.entropy_hash;
+ QuicPacketEntropyHash ack_entropy_hash = frame.entropy_hash;
NackRangeMap::reverse_iterator ack_iter = ack_info.nack_ranges.rbegin();
if (truncated) {
// Skip the nack ranges which the truncated ack won't include and set
@@ -2047,11 +2023,10 @@ bool QuicFramer::AppendAckFrameAndTypeByte(
}
uint64 delta_time_largest_observed_us = kUFloat16MaxValue;
- if (!received_info.delta_time_largest_observed.IsInfinite()) {
- DCHECK_LE(0u,
- frame.received_info.delta_time_largest_observed.ToMicroseconds());
+ if (!frame.delta_time_largest_observed.IsInfinite()) {
+ DCHECK_LE(0u, frame.delta_time_largest_observed.ToMicroseconds());
delta_time_largest_observed_us =
- received_info.delta_time_largest_observed.ToMicroseconds();
+ frame.delta_time_largest_observed.ToMicroseconds();
}
if (!writer->WriteUFloat16(delta_time_largest_observed_us)) {
@@ -2090,7 +2065,7 @@ bool QuicFramer::AppendAckFrameAndTypeByte(
// Append revived packets.
// If not all the revived packets fit, only mention the ones that do.
- uint8 num_revived_packets = min(received_info.revived_packets.size(),
+ uint8 num_revived_packets = min(frame.revived_packets.size(),
kMaxRevivedPackets);
num_revived_packets = min(
static_cast<size_t>(num_revived_packets),
@@ -2099,10 +2074,9 @@ bool QuicFramer::AppendAckFrameAndTypeByte(
return false;
}
- SequenceNumberSet::const_iterator iter =
- received_info.revived_packets.begin();
+ SequenceNumberSet::const_iterator iter = frame.revived_packets.begin();
for (int i = 0; i < num_revived_packets; ++i, ++iter) {
- LOG_IF(DFATAL, !ContainsKey(received_info.missing_packets, *iter));
+ LOG_IF(DFATAL, !ContainsKey(frame.missing_packets, *iter));
if (!AppendPacketSequenceNumber(largest_observed_length,
*iter, writer)) {
return false;
« no previous file with comments | « net/quic/quic_framer.h ('k') | net/quic/quic_framer_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698