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

Unified Diff: net/quic/quic_packet_creator.cc

Issue 11958018: Queueing QUIC frames to be resent instead of packets and packing RST frames with acks and congestio… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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 side-by-side diff with in-line comments
Download patch
Index: net/quic/quic_packet_creator.cc
diff --git a/net/quic/quic_packet_creator.cc b/net/quic/quic_packet_creator.cc
index d9d6c405675ba85f96006703b8533b27f75954b3..769434decc2207f3ca5fbba5aee260ecd5597dac 100644
--- a/net/quic/quic_packet_creator.cc
+++ b/net/quic/quic_packet_creator.cc
@@ -34,7 +34,14 @@ void QuicPacketCreator::OnBuiltFecProtectedPayload(
}
}
-QuicPacketCreator::PacketPair QuicPacketCreator::SerializeFrames(
+PacketPair QuicPacketCreator::SerializeAllFrames(const QuicFrames& frames) {
+ size_t num_serialized;
+ PacketPair pair = SerializeFrames(frames, &num_serialized);
+ DCHECK_EQ(frames.size(), num_serialized);
+ return pair;
+}
+
+PacketPair QuicPacketCreator::SerializeFrames(
const QuicFrames& frames, size_t* num_serialized) {
QuicPacketHeader header;
FillPacketHeader(0, PACKET_FLAGS_NONE, &header);
@@ -48,7 +55,8 @@ size_t QuicPacketCreator::DataToStream(QuicStreamId id,
StringPiece data,
QuicStreamOffset offset,
bool fin,
- vector<PacketPair>* packets) {
+ vector<PacketPair>* packets,
+ QuicFrames* packetized_frames) {
DCHECK_GT(options_.max_packet_length,
QuicUtils::StreamFramePacketOverhead(1));
DCHECK_LT(0u, options_.max_num_packets);
@@ -89,8 +97,9 @@ size_t QuicPacketCreator::DataToStream(QuicStreamId id,
StringPiece data_frame(data.data() + data.size() - unconsumed_bytes,
frame_len);
- QuicStreamFrame frame(id, set_fin, offset, data_frame);
- frames.push_back(QuicFrame(&frame));
+ QuicStreamFrame* frame = new QuicStreamFrame(
+ id, set_fin, offset, data_frame);
+ frames.push_back(QuicFrame(frame));
FillPacketHeader(current_fec_group, PACKET_FLAGS_NONE, &header);
offset += frame_len;
unconsumed_bytes -= frame_len;
@@ -100,6 +109,7 @@ size_t QuicPacketCreator::DataToStream(QuicStreamId id,
DCHECK(packet);
DCHECK_GE(options_.max_packet_length, packet->length());
packets->push_back(make_pair(header.packet_sequence_number, packet));
+ packetized_frames->push_back(frames[0]);
frames.clear();
}
// If we haven't finished serializing all the data, don't set any final fin.
@@ -111,11 +121,13 @@ size_t QuicPacketCreator::DataToStream(QuicStreamId id,
// Create a new packet for the fin, if necessary.
if (fin && data.size() == 0) {
FillPacketHeader(current_fec_group, PACKET_FLAGS_NONE, &header);
- QuicStreamFrame frame(id, true, offset, "");
- frames.push_back(QuicFrame(&frame));
+ QuicStreamFrame* frame = new QuicStreamFrame(id, true, offset, "");
+ frames.push_back(QuicFrame(frame));
packet = framer_->ConstructFrameDataPacket(header, frames);
DCHECK(packet);
+ DCHECK_GE(options_.max_packet_length, packet->length());
packets->push_back(make_pair(header.packet_sequence_number, packet));
+ packetized_frames->push_back(frames[0]);
frames.clear();
}
@@ -125,6 +137,7 @@ size_t QuicPacketCreator::DataToStream(QuicStreamId id,
fec_data.redundancy = fec_group_->parity();
QuicPacket* fec_packet = framer_->ConstructFecPacket(header, fec_data);
DCHECK(fec_packet);
+ DCHECK_GE(options_.max_packet_length, packet->length());
packets->push_back(make_pair(header.packet_sequence_number, fec_packet));
++fec_group_number_;
}
@@ -150,22 +163,6 @@ size_t QuicPacketCreator::DataToStream(QuicStreamId id,
return data.size() - unconsumed_bytes;
}
-QuicPacketCreator::PacketPair QuicPacketCreator::ResetStream(
- QuicStreamId id,
- QuicStreamOffset offset,
- QuicErrorCode error) {
- QuicPacketHeader header;
- FillPacketHeader(0, PACKET_FLAGS_NONE, &header);
-
- QuicRstStreamFrame close_frame(id, offset, error);
-
- QuicFrames frames;
- frames.push_back(QuicFrame(&close_frame));
- QuicPacket* packet = framer_->ConstructFrameDataPacket(header, frames);
- DCHECK(packet);
- return make_pair(header.packet_sequence_number, packet);
-}
-
QuicPacketCreator::PacketPair QuicPacketCreator::CloseConnection(
QuicConnectionCloseFrame* close_frame) {
@@ -179,13 +176,6 @@ QuicPacketCreator::PacketPair QuicPacketCreator::CloseConnection(
return make_pair(header.packet_sequence_number, packet);
}
-QuicPacketSequenceNumber QuicPacketCreator::SetNewSequenceNumber(
- QuicPacket* packet) {
- ++sequence_number_;
- framer_->WriteSequenceNumber(sequence_number_, packet);
- return sequence_number_;
-}
-
void QuicPacketCreator::FillPacketHeader(QuicFecGroupNumber fec_group,
QuicPacketFlags flags,
QuicPacketHeader* header) {

Powered by Google App Engine
This is Rietveld 408576698