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

Side by Side Diff: net/quic/test_tools/quic_test_packet_maker.cc

Issue 2096713002: Reduce SpdyHeaderBlock copies with move semantics. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: clear() does not work after all. Created 4 years, 6 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/buffered_spdy_framer.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 <utility>
8 9
9 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
10 #include "net/quic/quic_framer.h" 11 #include "net/quic/quic_framer.h"
11 #include "net/quic/quic_http_utils.h" 12 #include "net/quic/quic_http_utils.h"
12 #include "net/quic/quic_utils.h" 13 #include "net/quic/quic_utils.h"
13 #include "net/quic/test_tools/quic_test_utils.h" 14 #include "net/quic/test_tools/quic_test_utils.h"
14 15
15 using std::make_pair; 16 using std::make_pair;
16 17
17 namespace net { 18 namespace net {
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 return MakeMultipleFramesPacket(header_, frames); 357 return MakeMultipleFramesPacket(header_, frames);
357 } 358 }
358 359
359 std::unique_ptr<QuicReceivedPacket> 360 std::unique_ptr<QuicReceivedPacket>
360 QuicTestPacketMaker::MakeRequestHeadersAndMultipleDataFramesPacket( 361 QuicTestPacketMaker::MakeRequestHeadersAndMultipleDataFramesPacket(
361 QuicPacketNumber packet_number, 362 QuicPacketNumber packet_number,
362 QuicStreamId stream_id, 363 QuicStreamId stream_id,
363 bool should_include_version, 364 bool should_include_version,
364 bool fin, 365 bool fin,
365 SpdyPriority priority, 366 SpdyPriority priority,
366 const SpdyHeaderBlock& headers, 367 SpdyHeaderBlock headers,
367 size_t* spdy_headers_frame_length, 368 size_t* spdy_headers_frame_length,
368 const std::vector<std::string>& data_writes) { 369 const std::vector<std::string>& data_writes) {
369 InitializeHeader(packet_number, should_include_version); 370 InitializeHeader(packet_number, should_include_version);
370 SpdySerializedFrame spdy_frame; 371 SpdySerializedFrame spdy_frame;
371 if (spdy_request_framer_.protocol_version() == SPDY3) { 372 if (spdy_request_framer_.protocol_version() == SPDY3) {
372 SpdySynStreamIR syn_stream(stream_id); 373 SpdySynStreamIR syn_stream(stream_id, std::move(headers));
373 syn_stream.set_header_block(headers);
374 syn_stream.set_fin(fin); 374 syn_stream.set_fin(fin);
375 syn_stream.set_priority(priority); 375 syn_stream.set_priority(priority);
376 spdy_frame = spdy_request_framer_.SerializeSynStream(syn_stream); 376 spdy_frame = spdy_request_framer_.SerializeSynStream(syn_stream);
377 } else { 377 } else {
378 SpdyHeadersIR headers_frame(stream_id); 378 SpdyHeadersIR headers_frame(stream_id, std::move(headers));
379 headers_frame.set_header_block(headers);
380 headers_frame.set_fin(fin); 379 headers_frame.set_fin(fin);
381 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(priority)); 380 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(priority));
382 headers_frame.set_has_priority(true); 381 headers_frame.set_has_priority(true);
383 spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame); 382 spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame);
384 } 383 }
385 if (spdy_headers_frame_length) { 384 if (spdy_headers_frame_length) {
386 *spdy_headers_frame_length = spdy_frame.size(); 385 *spdy_headers_frame_length = spdy_frame.size();
387 } 386 }
388 QuicStreamFrame frame( 387 QuicStreamFrame frame(
389 kHeadersStreamId, false, 0, 388 kHeadersStreamId, false, 0,
(...skipping 20 matching lines...) Expand all
410 return MakeMultipleFramesPacket(header_, frames); 409 return MakeMultipleFramesPacket(header_, frames);
411 } 410 }
412 411
413 std::unique_ptr<QuicReceivedPacket> 412 std::unique_ptr<QuicReceivedPacket>
414 QuicTestPacketMaker::MakeRequestHeadersPacket( 413 QuicTestPacketMaker::MakeRequestHeadersPacket(
415 QuicPacketNumber packet_number, 414 QuicPacketNumber packet_number,
416 QuicStreamId stream_id, 415 QuicStreamId stream_id,
417 bool should_include_version, 416 bool should_include_version,
418 bool fin, 417 bool fin,
419 SpdyPriority priority, 418 SpdyPriority priority,
420 const SpdyHeaderBlock& headers, 419 SpdyHeaderBlock headers,
421 size_t* spdy_headers_frame_length) { 420 size_t* spdy_headers_frame_length) {
422 return MakeRequestHeadersPacket(packet_number, stream_id, 421 return MakeRequestHeadersPacket(
423 should_include_version, fin, priority, 422 packet_number, stream_id, should_include_version, fin, priority,
424 headers, spdy_headers_frame_length, nullptr); 423 std::move(headers), spdy_headers_frame_length, nullptr);
425 } 424 }
426 425
427 // If |offset| is provided, will use the value when creating the packet. 426 // If |offset| is provided, will use the value when creating the packet.
428 // Will also update the value after packet creation. 427 // Will also update the value after packet creation.
429 std::unique_ptr<QuicReceivedPacket> 428 std::unique_ptr<QuicReceivedPacket>
430 QuicTestPacketMaker::MakeRequestHeadersPacket(QuicPacketNumber packet_number, 429 QuicTestPacketMaker::MakeRequestHeadersPacket(QuicPacketNumber packet_number,
431 QuicStreamId stream_id, 430 QuicStreamId stream_id,
432 bool should_include_version, 431 bool should_include_version,
433 bool fin, 432 bool fin,
434 SpdyPriority priority, 433 SpdyPriority priority,
435 const SpdyHeaderBlock& headers, 434 SpdyHeaderBlock headers,
436 size_t* spdy_headers_frame_length, 435 size_t* spdy_headers_frame_length,
437 QuicStreamOffset* offset) { 436 QuicStreamOffset* offset) {
438 InitializeHeader(packet_number, should_include_version); 437 InitializeHeader(packet_number, should_include_version);
439 SpdySerializedFrame spdy_frame; 438 SpdySerializedFrame spdy_frame;
440 if (spdy_request_framer_.protocol_version() == SPDY3) { 439 if (spdy_request_framer_.protocol_version() == SPDY3) {
441 SpdySynStreamIR syn_stream(stream_id); 440 SpdySynStreamIR syn_stream(stream_id, std::move(headers));
442 syn_stream.set_header_block(headers);
443 syn_stream.set_fin(fin); 441 syn_stream.set_fin(fin);
444 syn_stream.set_priority(priority); 442 syn_stream.set_priority(priority);
445 spdy_frame = spdy_request_framer_.SerializeSynStream(syn_stream); 443 spdy_frame = spdy_request_framer_.SerializeSynStream(syn_stream);
446 } else { 444 } else {
447 SpdyHeadersIR headers_frame(stream_id); 445 SpdyHeadersIR headers_frame(stream_id, std::move(headers));
448 headers_frame.set_header_block(headers);
449 headers_frame.set_fin(fin); 446 headers_frame.set_fin(fin);
450 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(priority)); 447 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(priority));
451 headers_frame.set_has_priority(true); 448 headers_frame.set_has_priority(true);
452 spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame); 449 spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame);
453 } 450 }
454 if (spdy_headers_frame_length) { 451 if (spdy_headers_frame_length) {
455 *spdy_headers_frame_length = spdy_frame.size(); 452 *spdy_headers_frame_length = spdy_frame.size();
456 } 453 }
457 if (offset != nullptr) { 454 if (offset != nullptr) {
458 QuicStreamFrame frame( 455 QuicStreamFrame frame(
(...skipping 12 matching lines...) Expand all
471 468
472 // Convenience method for calling MakeRequestHeadersPacket with nullptr for 469 // Convenience method for calling MakeRequestHeadersPacket with nullptr for
473 // |spdy_headers_frame_length|. 470 // |spdy_headers_frame_length|.
474 std::unique_ptr<QuicReceivedPacket> 471 std::unique_ptr<QuicReceivedPacket>
475 QuicTestPacketMaker::MakeRequestHeadersPacketWithOffsetTracking( 472 QuicTestPacketMaker::MakeRequestHeadersPacketWithOffsetTracking(
476 QuicPacketNumber packet_number, 473 QuicPacketNumber packet_number,
477 QuicStreamId stream_id, 474 QuicStreamId stream_id,
478 bool should_include_version, 475 bool should_include_version,
479 bool fin, 476 bool fin,
480 SpdyPriority priority, 477 SpdyPriority priority,
481 const SpdyHeaderBlock& headers, 478 SpdyHeaderBlock headers,
482 QuicStreamOffset* offset) { 479 QuicStreamOffset* offset) {
483 return MakeRequestHeadersPacket(packet_number, stream_id, 480 return MakeRequestHeadersPacket(packet_number, stream_id,
484 should_include_version, fin, priority, 481 should_include_version, fin, priority,
485 headers, nullptr, offset); 482 std::move(headers), nullptr, offset);
486 } 483 }
487 484
488 // If |offset| is provided, will use the value when creating the packet. 485 // If |offset| is provided, will use the value when creating the packet.
489 // Will also update the value after packet creation. 486 // Will also update the value after packet creation.
490 std::unique_ptr<QuicReceivedPacket> 487 std::unique_ptr<QuicReceivedPacket>
491 QuicTestPacketMaker::MakeResponseHeadersPacket( 488 QuicTestPacketMaker::MakeResponseHeadersPacket(
492 QuicPacketNumber packet_number, 489 QuicPacketNumber packet_number,
493 QuicStreamId stream_id, 490 QuicStreamId stream_id,
494 bool should_include_version, 491 bool should_include_version,
495 bool fin, 492 bool fin,
496 const SpdyHeaderBlock& headers, 493 SpdyHeaderBlock headers,
497 size_t* spdy_headers_frame_length, 494 size_t* spdy_headers_frame_length,
498 QuicStreamOffset* offset) { 495 QuicStreamOffset* offset) {
499 InitializeHeader(packet_number, should_include_version); 496 InitializeHeader(packet_number, should_include_version);
500 SpdySerializedFrame spdy_frame; 497 SpdySerializedFrame spdy_frame;
501 if (spdy_response_framer_.protocol_version() == SPDY3) { 498 if (spdy_response_framer_.protocol_version() == SPDY3) {
502 SpdySynReplyIR syn_reply(stream_id); 499 SpdySynReplyIR syn_reply(stream_id, std::move(headers));
503 syn_reply.set_header_block(headers);
504 syn_reply.set_fin(fin); 500 syn_reply.set_fin(fin);
505 spdy_frame = spdy_response_framer_.SerializeSynReply(syn_reply); 501 spdy_frame = spdy_response_framer_.SerializeSynReply(syn_reply);
506 } else { 502 } else {
507 SpdyHeadersIR headers_frame(stream_id); 503 SpdyHeadersIR headers_frame(stream_id, std::move(headers));
508 headers_frame.set_header_block(headers);
509 headers_frame.set_fin(fin); 504 headers_frame.set_fin(fin);
510 spdy_frame = spdy_response_framer_.SerializeFrame(headers_frame); 505 spdy_frame = spdy_response_framer_.SerializeFrame(headers_frame);
511 } 506 }
512 if (spdy_headers_frame_length) { 507 if (spdy_headers_frame_length) {
513 *spdy_headers_frame_length = spdy_frame.size(); 508 *spdy_headers_frame_length = spdy_frame.size();
514 } 509 }
515 if (offset != nullptr) { 510 if (offset != nullptr) {
516 QuicStreamFrame frame( 511 QuicStreamFrame frame(
517 kHeadersStreamId, false, *offset, 512 kHeadersStreamId, false, *offset,
518 base::StringPiece(spdy_frame.data(), spdy_frame.size())); 513 base::StringPiece(spdy_frame.data(), spdy_frame.size()));
519 *offset += spdy_frame.size(); 514 *offset += spdy_frame.size();
520 return MakePacket(header_, QuicFrame(&frame)); 515 return MakePacket(header_, QuicFrame(&frame));
521 } else { 516 } else {
522 QuicStreamFrame frame( 517 QuicStreamFrame frame(
523 kHeadersStreamId, false, 0, 518 kHeadersStreamId, false, 0,
524 base::StringPiece(spdy_frame.data(), spdy_frame.size())); 519 base::StringPiece(spdy_frame.data(), spdy_frame.size()));
525 return MakePacket(header_, QuicFrame(&frame)); 520 return MakePacket(header_, QuicFrame(&frame));
526 } 521 }
527 } 522 }
528 523
529 std::unique_ptr<QuicReceivedPacket> 524 std::unique_ptr<QuicReceivedPacket>
530 QuicTestPacketMaker::MakeResponseHeadersPacket( 525 QuicTestPacketMaker::MakeResponseHeadersPacket(
531 QuicPacketNumber packet_number, 526 QuicPacketNumber packet_number,
532 QuicStreamId stream_id, 527 QuicStreamId stream_id,
533 bool should_include_version, 528 bool should_include_version,
534 bool fin, 529 bool fin,
535 const SpdyHeaderBlock& headers, 530 SpdyHeaderBlock headers,
536 size_t* spdy_headers_frame_length) { 531 size_t* spdy_headers_frame_length) {
537 return MakeResponseHeadersPacket(packet_number, stream_id, 532 return MakeResponseHeadersPacket(
538 should_include_version, fin, headers, 533 packet_number, stream_id, should_include_version, fin, std::move(headers),
539 spdy_headers_frame_length, nullptr); 534 spdy_headers_frame_length, nullptr);
540 } 535 }
541 536
542 // Convenience method for calling MakeResponseHeadersPacket with nullptr for 537 // Convenience method for calling MakeResponseHeadersPacket with nullptr for
543 // |spdy_headers_frame_length|. 538 // |spdy_headers_frame_length|.
544 std::unique_ptr<QuicReceivedPacket> 539 std::unique_ptr<QuicReceivedPacket>
545 QuicTestPacketMaker::MakeResponseHeadersPacketWithOffsetTracking( 540 QuicTestPacketMaker::MakeResponseHeadersPacketWithOffsetTracking(
546 QuicPacketNumber packet_number, 541 QuicPacketNumber packet_number,
547 QuicStreamId stream_id, 542 QuicStreamId stream_id,
548 bool should_include_version, 543 bool should_include_version,
549 bool fin, 544 bool fin,
550 const SpdyHeaderBlock& headers, 545 SpdyHeaderBlock headers,
551 QuicStreamOffset* offset) { 546 QuicStreamOffset* offset) {
552 return MakeResponseHeadersPacket(packet_number, stream_id, 547 return MakeResponseHeadersPacket(packet_number, stream_id,
553 should_include_version, fin, headers, 548 should_include_version, fin,
554 nullptr, offset); 549 std::move(headers), nullptr, offset);
555 } 550 }
556 551
557 SpdyHeaderBlock QuicTestPacketMaker::GetRequestHeaders( 552 SpdyHeaderBlock QuicTestPacketMaker::GetRequestHeaders(
558 const std::string& method, 553 const std::string& method,
559 const std::string& scheme, 554 const std::string& scheme,
560 const std::string& path) { 555 const std::string& path) {
561 SpdyHeaderBlock headers; 556 SpdyHeaderBlock headers;
562 headers[":method"] = method; 557 headers[":method"] = method;
563 headers[":authority"] = host_; 558 headers[":authority"] = host_;
564 headers[":scheme"] = scheme; 559 headers[":scheme"] = scheme;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 header_.public_header.reset_flag = false; 608 header_.public_header.reset_flag = false;
614 header_.public_header.version_flag = should_include_version; 609 header_.public_header.version_flag = should_include_version;
615 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; 610 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER;
616 header_.packet_number = packet_number; 611 header_.packet_number = packet_number;
617 header_.entropy_flag = false; 612 header_.entropy_flag = false;
618 header_.fec_flag = false; 613 header_.fec_flag = false;
619 } 614 }
620 615
621 } // namespace test 616 } // namespace test
622 } // namespace net 617 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/test_tools/quic_test_packet_maker.h ('k') | net/spdy/buffered_spdy_framer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698