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

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, 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 unified diff | Download patch
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 8
9 #include "net/quic/quic_framer.h" 9 #include "net/quic/quic_framer.h"
10 #include "net/quic/quic_http_utils.h" 10 #include "net/quic/quic_http_utils.h"
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 QuicStreamId stream_id, 280 QuicStreamId stream_id,
281 bool should_include_version, 281 bool should_include_version,
282 bool fin, 282 bool fin,
283 QuicStreamOffset offset, 283 QuicStreamOffset offset,
284 base::StringPiece data) { 284 base::StringPiece data) {
285 InitializeHeader(packet_number, should_include_version); 285 InitializeHeader(packet_number, should_include_version);
286 QuicStreamFrame frame(stream_id, fin, offset, data); 286 QuicStreamFrame frame(stream_id, fin, offset, data);
287 return MakePacket(header_, QuicFrame(&frame)); 287 return MakePacket(header_, QuicFrame(&frame));
288 } 288 }
289 289
290 scoped_ptr<QuicReceivedPacket>
291 QuicTestPacketMaker::MakeMultipleDataFramesPacket(
292 QuicPacketNumber packet_number,
293 QuicStreamId stream_id,
294 bool should_include_version,
295 bool fin,
296 QuicStreamOffset offset,
297 const std::vector<std::string>& data_writes) {
298 InitializeHeader(packet_number, should_include_version);
299 QuicFrames data_frames =
300 MakeMultipleDataFrames(stream_id, fin, offset, data_writes);
301 return MakeMultipleFramesPacket(header_, data_frames);
302 }
303
290 scoped_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndDataPacket( 304 scoped_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndDataPacket(
291 QuicPacketNumber packet_number, 305 QuicPacketNumber packet_number,
292 bool include_version, 306 bool include_version,
293 QuicStreamId stream_id, 307 QuicStreamId stream_id,
294 QuicPacketNumber largest_received, 308 QuicPacketNumber largest_received,
295 QuicPacketNumber least_unacked, 309 QuicPacketNumber least_unacked,
296 bool fin, 310 bool fin,
297 QuicStreamOffset offset, 311 QuicStreamOffset offset,
298 base::StringPiece data) { 312 base::StringPiece data) {
299 InitializeHeader(packet_number, include_version); 313 InitializeHeader(packet_number, include_version);
300 314
301 QuicAckFrame ack(MakeAckFrame(largest_received)); 315 QuicAckFrame ack(MakeAckFrame(largest_received));
302 ack.ack_delay_time = QuicTime::Delta::Zero(); 316 ack.ack_delay_time = QuicTime::Delta::Zero();
303 for (QuicPacketNumber i = least_unacked; i <= largest_received; ++i) { 317 for (QuicPacketNumber i = least_unacked; i <= largest_received; ++i) {
304 ack.received_packet_times.push_back(make_pair(i, clock_->Now())); 318 ack.received_packet_times.push_back(make_pair(i, clock_->Now()));
305 } 319 }
306 QuicFrames frames; 320 QuicFrames frames;
307 frames.push_back(QuicFrame(&ack)); 321 frames.push_back(QuicFrame(&ack));
308 322
309 QuicStopWaitingFrame stop_waiting; 323 QuicStopWaitingFrame stop_waiting;
310 stop_waiting.least_unacked = least_unacked; 324 stop_waiting.least_unacked = least_unacked;
311 frames.push_back(QuicFrame(&stop_waiting)); 325 frames.push_back(QuicFrame(&stop_waiting));
312 326
313 QuicStreamFrame stream_frame(stream_id, fin, offset, data); 327 QuicStreamFrame stream_frame(stream_id, fin, offset, data);
314 frames.push_back(QuicFrame(&stream_frame)); 328 frames.push_back(QuicFrame(&stream_frame));
315 329
316 return MakeMultipleFramesPacket(header_, frames); 330 return MakeMultipleFramesPacket(header_, frames);
317 } 331 }
318 332
333 scoped_ptr<QuicReceivedPacket>
334 QuicTestPacketMaker::MakeRequestHeadersAndMultipleDataFramesPacket(
335 QuicPacketNumber packet_number,
336 QuicStreamId stream_id,
337 bool should_include_version,
338 bool fin,
339 SpdyPriority priority,
340 const SpdyHeaderBlock& headers,
341 size_t* spdy_headers_frame_length,
342 const std::vector<std::string>& data_writes) {
343 InitializeHeader(packet_number, should_include_version);
344 SpdySerializedFrame spdy_frame;
345 if (spdy_request_framer_.protocol_version() == SPDY3) {
346 SpdySynStreamIR syn_stream(stream_id);
347 syn_stream.set_header_block(headers);
348 syn_stream.set_fin(fin);
349 syn_stream.set_priority(priority);
350 spdy_frame = spdy_request_framer_.SerializeSynStream(syn_stream);
351 } else {
352 SpdyHeadersIR headers_frame(stream_id);
353 headers_frame.set_header_block(headers);
354 headers_frame.set_fin(fin);
355 headers_frame.set_priority(priority);
356 headers_frame.set_has_priority(true);
357 spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame);
358 }
359 if (spdy_headers_frame_length) {
360 *spdy_headers_frame_length = spdy_frame.size();
361 }
362 QuicStreamFrame frame(
363 kHeadersStreamId, false, 0,
364 base::StringPiece(spdy_frame.data(), spdy_frame.size()));
365
366 QuicFrames frames;
367 frames.push_back(QuicFrame(&frame));
368
369 QuicFrames data_frames =
370 MakeMultipleDataFrames(stream_id, fin, 0, data_writes);
371 for (auto data_frame : data_frames) {
372 frames.push_back(data_frame);
373 }
374 return MakeMultipleFramesPacket(header_, frames);
375 }
376
319 scoped_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( 377 scoped_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket(
320 QuicPacketNumber packet_number, 378 QuicPacketNumber packet_number,
321 QuicStreamId stream_id, 379 QuicStreamId stream_id,
322 bool should_include_version, 380 bool should_include_version,
323 bool fin, 381 bool fin,
324 SpdyPriority priority, 382 SpdyPriority priority,
325 const SpdyHeaderBlock& headers, 383 const SpdyHeaderBlock& headers,
326 size_t* spdy_headers_frame_length) { 384 size_t* spdy_headers_frame_length) {
327 return MakeRequestHeadersPacket(packet_number, stream_id, 385 return MakeRequestHeadersPacket(packet_number, stream_id,
328 should_include_version, fin, priority, 386 should_include_version, fin, priority,
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 BuildUnsizedDataPacket(&framer, header, frames)); 562 BuildUnsizedDataPacket(&framer, header, frames));
505 char buffer[kMaxPacketSize]; 563 char buffer[kMaxPacketSize];
506 size_t encrypted_size = framer.EncryptPayload(ENCRYPTION_NONE, /*path_id=*/0u, 564 size_t encrypted_size = framer.EncryptPayload(ENCRYPTION_NONE, /*path_id=*/0u,
507 header.packet_number, *packet, 565 header.packet_number, *packet,
508 buffer, kMaxPacketSize); 566 buffer, kMaxPacketSize);
509 EXPECT_NE(0u, encrypted_size); 567 EXPECT_NE(0u, encrypted_size);
510 QuicReceivedPacket encrypted(buffer, encrypted_size, clock_->Now(), false); 568 QuicReceivedPacket encrypted(buffer, encrypted_size, clock_->Now(), false);
511 return scoped_ptr<QuicReceivedPacket>(encrypted.Clone()); 569 return scoped_ptr<QuicReceivedPacket>(encrypted.Clone());
512 } 570 }
513 571
572 QuicFrames QuicTestPacketMaker::MakeMultipleDataFrames(
573 QuicStreamId stream_id,
574 bool fin,
575 QuicStreamOffset offset,
576 const std::vector<std::string>& data_writes) {
577 QuicFrames result_frames;
578 for (size_t i = 0; i < data_writes.size(); ++i) {
579 bool is_fin = fin && (i == data_writes.size() - 1);
580 QuicStreamFrame* stream_frame = new QuicStreamFrame(
581 stream_id, is_fin, offset, base::StringPiece(data_writes[i]));
582 offset += data_writes[i].length();
583 DVLOG(1) << "Adding frame: " << QuicFrame(stream_frame);
584 result_frames.push_back(QuicFrame(stream_frame));
585 }
586 return result_frames;
587 }
588
514 void QuicTestPacketMaker::InitializeHeader(QuicPacketNumber packet_number, 589 void QuicTestPacketMaker::InitializeHeader(QuicPacketNumber packet_number,
515 bool should_include_version) { 590 bool should_include_version) {
516 header_.public_header.connection_id = connection_id_; 591 header_.public_header.connection_id = connection_id_;
517 header_.public_header.reset_flag = false; 592 header_.public_header.reset_flag = false;
518 header_.public_header.version_flag = should_include_version; 593 header_.public_header.version_flag = should_include_version;
519 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; 594 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER;
520 header_.packet_number = packet_number; 595 header_.packet_number = packet_number;
521 header_.fec_group = 0; 596 header_.fec_group = 0;
522 header_.entropy_flag = false; 597 header_.entropy_flag = false;
523 header_.fec_flag = false; 598 header_.fec_flag = false;
524 } 599 }
525 600
526 } // namespace test 601 } // namespace test
527 } // namespace net 602 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698