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

Unified Diff: net/quic/test_tools/quic_test_packet_maker.cc

Issue 1856073002: Coalesce small buffers in net::BidirectionalStream (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix Javadoc Created 4 years, 8 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/test_tools/quic_test_packet_maker.cc
diff --git a/net/quic/test_tools/quic_test_packet_maker.cc b/net/quic/test_tools/quic_test_packet_maker.cc
index 67e0ffa91fdde9b2c488a219d867579143cfa3a9..a1a7f896d8a5a6140e439879ab86dc8b78dc173e 100644
--- a/net/quic/test_tools/quic_test_packet_maker.cc
+++ b/net/quic/test_tools/quic_test_packet_maker.cc
@@ -287,6 +287,20 @@ scoped_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeDataPacket(
return MakePacket(header_, QuicFrame(&frame));
}
+scoped_ptr<QuicReceivedPacket>
+QuicTestPacketMaker::MakeMultipleDataFramesPacket(
+ QuicPacketNumber packet_number,
+ QuicStreamId stream_id,
+ bool should_include_version,
+ bool fin,
+ QuicStreamOffset offset,
+ const std::vector<std::string>& data_writes) {
+ InitializeHeader(packet_number, should_include_version);
+ QuicFrames data_frames =
+ MakeMultipleDataFrames(stream_id, fin, offset, data_writes);
+ return MakeMultipleFramesPacket(header_, data_frames);
+}
+
scoped_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndDataPacket(
QuicPacketNumber packet_number,
bool include_version,
@@ -316,6 +330,50 @@ scoped_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndDataPacket(
return MakeMultipleFramesPacket(header_, frames);
}
+scoped_ptr<QuicReceivedPacket>
+QuicTestPacketMaker::MakeRequestHeadersAndMultipleDataFramesPacket(
+ QuicPacketNumber packet_number,
+ QuicStreamId stream_id,
+ bool should_include_version,
+ bool fin,
+ SpdyPriority priority,
+ const SpdyHeaderBlock& headers,
+ size_t* spdy_headers_frame_length,
+ const std::vector<std::string>& data_writes) {
+ InitializeHeader(packet_number, should_include_version);
+ SpdySerializedFrame spdy_frame;
+ if (spdy_request_framer_.protocol_version() == SPDY3) {
+ SpdySynStreamIR syn_stream(stream_id);
+ syn_stream.set_header_block(headers);
+ syn_stream.set_fin(fin);
+ syn_stream.set_priority(priority);
+ spdy_frame = spdy_request_framer_.SerializeSynStream(syn_stream);
+ } else {
+ SpdyHeadersIR headers_frame(stream_id);
+ headers_frame.set_header_block(headers);
+ headers_frame.set_fin(fin);
+ headers_frame.set_priority(priority);
+ headers_frame.set_has_priority(true);
+ spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame);
+ }
+ if (spdy_headers_frame_length) {
+ *spdy_headers_frame_length = spdy_frame.size();
+ }
+ QuicStreamFrame frame(
+ kHeadersStreamId, false, 0,
+ base::StringPiece(spdy_frame.data(), spdy_frame.size()));
+
+ QuicFrames frames;
+ frames.push_back(QuicFrame(&frame));
+
+ QuicFrames data_frames =
+ MakeMultipleDataFrames(stream_id, fin, 0, data_writes);
+ for (auto data_frame : data_frames) {
+ frames.push_back(data_frame);
+ }
+ return MakeMultipleFramesPacket(header_, frames);
+}
+
scoped_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket(
QuicPacketNumber packet_number,
QuicStreamId stream_id,
@@ -511,6 +569,23 @@ scoped_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeMultipleFramesPacket(
return scoped_ptr<QuicReceivedPacket>(encrypted.Clone());
}
+QuicFrames QuicTestPacketMaker::MakeMultipleDataFrames(
+ QuicStreamId stream_id,
+ bool fin,
+ QuicStreamOffset offset,
+ const std::vector<std::string>& data_writes) {
+ QuicFrames result_frames;
+ for (size_t i = 0; i < data_writes.size(); ++i) {
+ bool is_fin = fin && (i == data_writes.size() - 1);
+ QuicStreamFrame* stream_frame = new QuicStreamFrame(
+ stream_id, is_fin, offset, base::StringPiece(data_writes[i]));
+ offset += data_writes[i].length();
+ DVLOG(1) << "Adding frame: " << QuicFrame(stream_frame);
+ result_frames.push_back(QuicFrame(stream_frame));
+ }
+ return result_frames;
+}
+
void QuicTestPacketMaker::InitializeHeader(QuicPacketNumber packet_number,
bool should_include_version) {
header_.public_header.connection_id = connection_id_;

Powered by Google App Engine
This is Rietveld 408576698