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

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
« no previous file with comments | « net/quic/test_tools/quic_test_packet_maker.h ('k') | net/spdy/bidirectional_stream_spdy_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 9ddd05d66e43a3f0095e1342567d67518bcf9686..21ceb0fe9309a88a6e510b243f0233abdc195848 100644
--- a/net/quic/test_tools/quic_test_packet_maker.cc
+++ b/net/quic/test_tools/quic_test_packet_maker.cc
@@ -5,7 +5,9 @@
#include "net/quic/test_tools/quic_test_packet_maker.h"
#include <list>
+#include <memory>
+#include "base/memory/ptr_util.h"
#include "net/quic/quic_framer.h"
#include "net/quic/quic_http_utils.h"
#include "net/quic/quic_utils.h"
@@ -291,6 +293,33 @@ std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeDataPacket(
return MakePacket(header_, QuicFrame(&frame));
}
+std::unique_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;
+ // QuicFrame takes a raw pointer. Use a std::vector here so we keep
+ // StreamFrames alive until MakeMultipleFramesPacket is done.
+ std::vector<std::unique_ptr<QuicStreamFrame>> stream_frames;
+ for (size_t i = 0; i < data_writes.size(); ++i) {
+ bool is_fin = fin && (i == data_writes.size() - 1);
+ stream_frames.push_back(base::WrapUnique(new QuicStreamFrame(
+ stream_id, is_fin, offset, base::StringPiece(data_writes[i]))));
+ offset += data_writes[i].length();
+ }
+ for (const auto& stream_frame : stream_frames) {
+ QuicFrame quic_frame(stream_frame.get());
+ DVLOG(1) << "Adding frame: " << quic_frame;
+ data_frames.push_back(quic_frame);
+ }
+ return MakeMultipleFramesPacket(header_, data_frames);
+}
+
std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndDataPacket(
QuicPacketNumber packet_number,
bool include_version,
@@ -321,6 +350,60 @@ std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndDataPacket(
}
std::unique_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));
+
+ QuicStreamOffset offset = 0;
+ // QuicFrame takes a raw pointer. Use a std::vector here so we keep
+ // StreamFrames alive until MakeMultipleFramesPacket is done.
+ std::vector<std::unique_ptr<QuicStreamFrame>> stream_frames;
+ for (size_t i = 0; i < data_writes.size(); ++i) {
+ bool is_fin = fin && (i == data_writes.size() - 1);
+ stream_frames.push_back(base::WrapUnique(new QuicStreamFrame(
+ stream_id, is_fin, offset, base::StringPiece(data_writes[i]))));
+ offset += data_writes[i].length();
+ }
+ for (const auto& stream_frame : stream_frames) {
+ QuicFrame quic_frame(stream_frame.get());
+ DVLOG(1) << "Adding frame: " << quic_frame;
+ frames.push_back(quic_frame);
+ }
+ return MakeMultipleFramesPacket(header_, frames);
+}
+
+std::unique_ptr<QuicReceivedPacket>
QuicTestPacketMaker::MakeRequestHeadersPacket(
QuicPacketNumber packet_number,
QuicStreamId stream_id,
« no previous file with comments | « net/quic/test_tools/quic_test_packet_maker.h ('k') | net/spdy/bidirectional_stream_spdy_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698