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

Side by Side 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, 7 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
« 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/test_tools/quic_test_packet_maker.h" 5 #include "net/quic/test_tools/quic_test_packet_maker.h"
6 6
7 #include <list> 7 #include <list>
8 #include <memory>
8 9
10 #include "base/memory/ptr_util.h"
9 #include "net/quic/quic_framer.h" 11 #include "net/quic/quic_framer.h"
10 #include "net/quic/quic_http_utils.h" 12 #include "net/quic/quic_http_utils.h"
11 #include "net/quic/quic_utils.h" 13 #include "net/quic/quic_utils.h"
12 #include "net/quic/test_tools/quic_test_utils.h" 14 #include "net/quic/test_tools/quic_test_utils.h"
13 15
14 using std::make_pair; 16 using std::make_pair;
15 17
16 namespace net { 18 namespace net {
17 namespace test { 19 namespace test {
18 20
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 QuicStreamId stream_id, 286 QuicStreamId stream_id,
285 bool should_include_version, 287 bool should_include_version,
286 bool fin, 288 bool fin,
287 QuicStreamOffset offset, 289 QuicStreamOffset offset,
288 base::StringPiece data) { 290 base::StringPiece data) {
289 InitializeHeader(packet_number, should_include_version); 291 InitializeHeader(packet_number, should_include_version);
290 QuicStreamFrame frame(stream_id, fin, offset, data); 292 QuicStreamFrame frame(stream_id, fin, offset, data);
291 return MakePacket(header_, QuicFrame(&frame)); 293 return MakePacket(header_, QuicFrame(&frame));
292 } 294 }
293 295
296 std::unique_ptr<QuicReceivedPacket>
297 QuicTestPacketMaker::MakeMultipleDataFramesPacket(
298 QuicPacketNumber packet_number,
299 QuicStreamId stream_id,
300 bool should_include_version,
301 bool fin,
302 QuicStreamOffset offset,
303 const std::vector<std::string>& data_writes) {
304 InitializeHeader(packet_number, should_include_version);
305 QuicFrames data_frames;
306 // QuicFrame takes a raw pointer. Use a std::vector here so we keep
307 // StreamFrames alive until MakeMultipleFramesPacket is done.
308 std::vector<std::unique_ptr<QuicStreamFrame>> stream_frames;
309 for (size_t i = 0; i < data_writes.size(); ++i) {
310 bool is_fin = fin && (i == data_writes.size() - 1);
311 stream_frames.push_back(base::WrapUnique(new QuicStreamFrame(
312 stream_id, is_fin, offset, base::StringPiece(data_writes[i]))));
313 offset += data_writes[i].length();
314 }
315 for (const auto& stream_frame : stream_frames) {
316 QuicFrame quic_frame(stream_frame.get());
317 DVLOG(1) << "Adding frame: " << quic_frame;
318 data_frames.push_back(quic_frame);
319 }
320 return MakeMultipleFramesPacket(header_, data_frames);
321 }
322
294 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndDataPacket( 323 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndDataPacket(
295 QuicPacketNumber packet_number, 324 QuicPacketNumber packet_number,
296 bool include_version, 325 bool include_version,
297 QuicStreamId stream_id, 326 QuicStreamId stream_id,
298 QuicPacketNumber largest_received, 327 QuicPacketNumber largest_received,
299 QuicPacketNumber least_unacked, 328 QuicPacketNumber least_unacked,
300 bool fin, 329 bool fin,
301 QuicStreamOffset offset, 330 QuicStreamOffset offset,
302 base::StringPiece data) { 331 base::StringPiece data) {
303 InitializeHeader(packet_number, include_version); 332 InitializeHeader(packet_number, include_version);
(...skipping 10 matching lines...) Expand all
314 stop_waiting.least_unacked = least_unacked; 343 stop_waiting.least_unacked = least_unacked;
315 frames.push_back(QuicFrame(&stop_waiting)); 344 frames.push_back(QuicFrame(&stop_waiting));
316 345
317 QuicStreamFrame stream_frame(stream_id, fin, offset, data); 346 QuicStreamFrame stream_frame(stream_id, fin, offset, data);
318 frames.push_back(QuicFrame(&stream_frame)); 347 frames.push_back(QuicFrame(&stream_frame));
319 348
320 return MakeMultipleFramesPacket(header_, frames); 349 return MakeMultipleFramesPacket(header_, frames);
321 } 350 }
322 351
323 std::unique_ptr<QuicReceivedPacket> 352 std::unique_ptr<QuicReceivedPacket>
353 QuicTestPacketMaker::MakeRequestHeadersAndMultipleDataFramesPacket(
354 QuicPacketNumber packet_number,
355 QuicStreamId stream_id,
356 bool should_include_version,
357 bool fin,
358 SpdyPriority priority,
359 const SpdyHeaderBlock& headers,
360 size_t* spdy_headers_frame_length,
361 const std::vector<std::string>& data_writes) {
362 InitializeHeader(packet_number, should_include_version);
363 SpdySerializedFrame spdy_frame;
364 if (spdy_request_framer_.protocol_version() == SPDY3) {
365 SpdySynStreamIR syn_stream(stream_id);
366 syn_stream.set_header_block(headers);
367 syn_stream.set_fin(fin);
368 syn_stream.set_priority(priority);
369 spdy_frame = spdy_request_framer_.SerializeSynStream(syn_stream);
370 } else {
371 SpdyHeadersIR headers_frame(stream_id);
372 headers_frame.set_header_block(headers);
373 headers_frame.set_fin(fin);
374 headers_frame.set_priority(priority);
375 headers_frame.set_has_priority(true);
376 spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame);
377 }
378 if (spdy_headers_frame_length) {
379 *spdy_headers_frame_length = spdy_frame.size();
380 }
381 QuicStreamFrame frame(
382 kHeadersStreamId, false, 0,
383 base::StringPiece(spdy_frame.data(), spdy_frame.size()));
384
385 QuicFrames frames;
386 frames.push_back(QuicFrame(&frame));
387
388 QuicStreamOffset offset = 0;
389 // QuicFrame takes a raw pointer. Use a std::vector here so we keep
390 // StreamFrames alive until MakeMultipleFramesPacket is done.
391 std::vector<std::unique_ptr<QuicStreamFrame>> stream_frames;
392 for (size_t i = 0; i < data_writes.size(); ++i) {
393 bool is_fin = fin && (i == data_writes.size() - 1);
394 stream_frames.push_back(base::WrapUnique(new QuicStreamFrame(
395 stream_id, is_fin, offset, base::StringPiece(data_writes[i]))));
396 offset += data_writes[i].length();
397 }
398 for (const auto& stream_frame : stream_frames) {
399 QuicFrame quic_frame(stream_frame.get());
400 DVLOG(1) << "Adding frame: " << quic_frame;
401 frames.push_back(quic_frame);
402 }
403 return MakeMultipleFramesPacket(header_, frames);
404 }
405
406 std::unique_ptr<QuicReceivedPacket>
324 QuicTestPacketMaker::MakeRequestHeadersPacket( 407 QuicTestPacketMaker::MakeRequestHeadersPacket(
325 QuicPacketNumber packet_number, 408 QuicPacketNumber packet_number,
326 QuicStreamId stream_id, 409 QuicStreamId stream_id,
327 bool should_include_version, 410 bool should_include_version,
328 bool fin, 411 bool fin,
329 SpdyPriority priority, 412 SpdyPriority priority,
330 const SpdyHeaderBlock& headers, 413 const SpdyHeaderBlock& headers,
331 size_t* spdy_headers_frame_length) { 414 size_t* spdy_headers_frame_length) {
332 return MakeRequestHeadersPacket(packet_number, stream_id, 415 return MakeRequestHeadersPacket(packet_number, stream_id,
333 should_include_version, fin, priority, 416 should_include_version, fin, priority,
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 header_.public_header.version_flag = should_include_version; 608 header_.public_header.version_flag = should_include_version;
526 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; 609 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER;
527 header_.packet_number = packet_number; 610 header_.packet_number = packet_number;
528 header_.fec_group = 0; 611 header_.fec_group = 0;
529 header_.entropy_flag = false; 612 header_.entropy_flag = false;
530 header_.fec_flag = false; 613 header_.fec_flag = false;
531 } 614 }
532 615
533 } // namespace test 616 } // namespace test
534 } // namespace net 617 } // namespace net
OLDNEW
« 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