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

Side by Side Diff: net/quic/quic_packet_creator.cc

Issue 1525303003: Remove QuicPacketGenerator::OnSerializedPacket with functionality in QuicPacketCreator. No functio… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@110008813
Patch Set: get newly added files from upstream Created 5 years 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/quic_packet_creator.h ('k') | net/quic/quic_packet_creator_test.cc » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/quic_packet_creator.h" 5 #include "net/quic/quic_packet_creator.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 void QuicPacketCreator::Flush() { 446 void QuicPacketCreator::Flush() {
447 if (!HasPendingFrames()) { 447 if (!HasPendingFrames()) {
448 return; 448 return;
449 } 449 }
450 450
451 // TODO(rtenneti): Change the default 64 alignas value (used the default 451 // TODO(rtenneti): Change the default 64 alignas value (used the default
452 // value from CACHELINE_SIZE). 452 // value from CACHELINE_SIZE).
453 ALIGNAS(64) char seralized_packet_buffer[kMaxPacketSize]; 453 ALIGNAS(64) char seralized_packet_buffer[kMaxPacketSize];
454 SerializedPacket serialized_packet = 454 SerializedPacket serialized_packet =
455 SerializePacket(seralized_packet_buffer, kMaxPacketSize); 455 SerializePacket(seralized_packet_buffer, kMaxPacketSize);
456 delegate_->OnSerializedPacket(&serialized_packet); 456 OnSerializedPacket(&serialized_packet);
457 }
458
459 void QuicPacketCreator::OnSerializedPacket(SerializedPacket* packet) {
460 if (packet->packet == nullptr) {
461 LOG(DFATAL) << "Failed to SerializePacket. fec_policy:" << fec_send_policy()
462 << " should_fec_protect_:" << should_fec_protect_next_packet();
463 delegate_->CloseConnection(QUIC_FAILED_TO_SERIALIZE_PACKET, false);
464 return;
465 }
466 // There may be AckListeners interested in this packet.
467 packet->listeners.swap(ack_listeners_);
468 DCHECK(ack_listeners_.empty());
469 delegate_->OnSerializedPacket(packet);
470 has_ack_ = false;
471 has_stop_waiting_ = false;
472 MaybeSendFecPacketAndCloseGroup(/*force_send_fec=*/false,
473 /*is_fec_timeout=*/false);
474 // Maximum packet size may be only enacted while no packet is currently being
475 // constructed, so here we have a good opportunity to actually change it.
476 if (CanSetMaxPacketLength()) {
477 SetMaxPacketLength(max_packet_length_);
478 }
457 } 479 }
458 480
459 bool QuicPacketCreator::HasPendingFrames() const { 481 bool QuicPacketCreator::HasPendingFrames() const {
460 return !queued_frames_.empty(); 482 return !queued_frames_.empty();
461 } 483 }
462 484
463 bool QuicPacketCreator::HasPendingRetransmittableFrames() const { 485 bool QuicPacketCreator::HasPendingRetransmittableFrames() const {
464 return queued_retransmittable_frames_.get() != nullptr && 486 return queued_retransmittable_frames_.get() != nullptr &&
465 !queued_retransmittable_frames_->frames().empty(); 487 !queued_retransmittable_frames_->frames().empty();
466 } 488 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 } 524 }
503 525
504 bool QuicPacketCreator::AddPaddedSavedFrame(const QuicFrame& frame) { 526 bool QuicPacketCreator::AddPaddedSavedFrame(const QuicFrame& frame) {
505 if (AddFrame(frame, /*save_retransmittable_frames=*/true)) { 527 if (AddFrame(frame, /*save_retransmittable_frames=*/true)) {
506 needs_padding_ = true; 528 needs_padding_ = true;
507 return true; 529 return true;
508 } 530 }
509 return false; 531 return false;
510 } 532 }
511 533
534 void QuicPacketCreator::AddAckListener(QuicAckListenerInterface* listener,
535 QuicPacketLength length) {
536 DCHECK(!queued_frames_.empty());
537 ack_listeners_.push_back(AckListenerWrapper(listener, length));
538 }
539
512 SerializedPacket QuicPacketCreator::SerializePacket( 540 SerializedPacket QuicPacketCreator::SerializePacket(
513 char* encrypted_buffer, 541 char* encrypted_buffer,
514 size_t encrypted_buffer_len) { 542 size_t encrypted_buffer_len) {
515 DCHECK_LT(0u, encrypted_buffer_len); 543 DCHECK_LT(0u, encrypted_buffer_len);
516 LOG_IF(DFATAL, queued_frames_.empty()) 544 LOG_IF(DFATAL, queued_frames_.empty())
517 << "Attempt to serialize empty packet"; 545 << "Attempt to serialize empty packet";
518 if (fec_group_.get() != nullptr) { 546 if (fec_group_.get() != nullptr) {
519 DCHECK_GE(packet_number_ + 1, fec_group_->FecGroupNumber()); 547 DCHECK_GE(packet_number_ + 1, fec_group_->FecGroupNumber());
520 } 548 }
521 QuicPacketHeader header; 549 QuicPacketHeader header;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 } 601 }
574 602
575 // Update |needs_padding_| flag of |queued_retransmittable_frames_| here, and 603 // Update |needs_padding_| flag of |queued_retransmittable_frames_| here, and
576 // not in AddFrame, because when the first padded frame is added to the queue, 604 // not in AddFrame, because when the first padded frame is added to the queue,
577 // it might not be retransmittable, and hence the flag would end up being not 605 // it might not be retransmittable, and hence the flag would end up being not
578 // set. 606 // set.
579 if (queued_retransmittable_frames_.get() != nullptr) { 607 if (queued_retransmittable_frames_.get() != nullptr) {
580 queued_retransmittable_frames_->set_needs_padding(needs_padding_); 608 queued_retransmittable_frames_->set_needs_padding(needs_padding_);
581 } 609 }
582 610
583 const bool has_ack = has_ack_;
584 const bool has_stop_waiting = has_stop_waiting_;
585 has_ack_ = false;
586 has_stop_waiting_ = false;
587 packet_size_ = 0; 611 packet_size_ = 0;
588 queued_frames_.clear(); 612 queued_frames_.clear();
589 needs_padding_ = false; 613 needs_padding_ = false;
590 return SerializedPacket( 614 return SerializedPacket(
591 header.packet_number, header.public_header.packet_number_length, 615 header.packet_number, header.public_header.packet_number_length,
592 encrypted_buffer, encrypted_length, /* owns_buffer*/ false, 616 encrypted_buffer, encrypted_length, /* owns_buffer*/ false,
593 QuicFramer::GetPacketEntropyHash(header), 617 QuicFramer::GetPacketEntropyHash(header),
594 queued_retransmittable_frames_.release(), has_ack, has_stop_waiting, 618 queued_retransmittable_frames_.release(), has_ack_, has_stop_waiting_,
595 encryption_level_); 619 encryption_level_);
596 } 620 }
597 621
598 SerializedPacket QuicPacketCreator::SerializeFec(char* buffer, 622 SerializedPacket QuicPacketCreator::SerializeFec(char* buffer,
599 size_t buffer_len) { 623 size_t buffer_len) {
600 DCHECK_LT(0u, buffer_len); 624 DCHECK_LT(0u, buffer_len);
601 if (fec_group_.get() == nullptr || fec_group_->NumReceivedPackets() <= 0) { 625 if (fec_group_.get() == nullptr || fec_group_->NumReceivedPackets() <= 0) {
602 LOG(DFATAL) << "SerializeFEC called but no group or zero packets in group."; 626 LOG(DFATAL) << "SerializeFEC called but no group or zero packets in group.";
603 // TODO(jri): Make this a public method of framer? 627 // TODO(jri): Make this a public method of framer?
604 return NoPacket(); 628 return NoPacket();
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 if (ShouldSendFec(force_send_fec)) { 768 if (ShouldSendFec(force_send_fec)) {
745 if (fec_send_policy_ == FEC_ALARM_TRIGGER && !is_fec_timeout) { 769 if (fec_send_policy_ == FEC_ALARM_TRIGGER && !is_fec_timeout) {
746 ResetFecGroup(); 770 ResetFecGroup();
747 delegate_->OnResetFecGroup(); 771 delegate_->OnResetFecGroup();
748 } else { 772 } else {
749 // TODO(zhongyi): Change the default 64 alignas value (used the default 773 // TODO(zhongyi): Change the default 64 alignas value (used the default
750 // value from CACHELINE_SIZE). 774 // value from CACHELINE_SIZE).
751 ALIGNAS(64) char seralized_fec_buffer[kMaxPacketSize]; 775 ALIGNAS(64) char seralized_fec_buffer[kMaxPacketSize];
752 SerializedPacket serialized_fec = 776 SerializedPacket serialized_fec =
753 SerializeFec(seralized_fec_buffer, kMaxPacketSize); 777 SerializeFec(seralized_fec_buffer, kMaxPacketSize);
754 delegate_->OnSerializedPacket(&serialized_fec); 778 OnSerializedPacket(&serialized_fec);
755 } 779 }
756 } 780 }
757 781
758 if (!should_fec_protect_next_packet_ && fec_protect_ && !IsFecGroupOpen()) { 782 if (!should_fec_protect_next_packet_ && fec_protect_ && !IsFecGroupOpen()) {
759 StopFecProtectingPackets(); 783 StopFecProtectingPackets();
760 } 784 }
761 } 785 }
762 786
763 QuicTime::Delta QuicPacketCreator::GetFecTimeout( 787 QuicTime::Delta QuicPacketCreator::GetFecTimeout(
764 QuicPacketNumber packet_number) { 788 QuicPacketNumber packet_number) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 hash_map<QuicPathId, QuicPacketNumber>::iterator it = 828 hash_map<QuicPathId, QuicPacketNumber>::iterator it =
805 multipath_packet_number_.find(path_id); 829 multipath_packet_number_.find(path_id);
806 // If path_id is not in the map, it's a new path. Set packet_number to 0. 830 // If path_id is not in the map, it's a new path. Set packet_number to 0.
807 packet_number_ = it == multipath_packet_number_.end() ? 0 : it->second; 831 packet_number_ = it == multipath_packet_number_.end() ? 0 : it->second;
808 current_path_ = path_id; 832 current_path_ = path_id;
809 // Switching path needs to update packet number length. 833 // Switching path needs to update packet number length.
810 UpdatePacketNumberLength(least_packet_awaited_by_peer, max_packets_in_flight); 834 UpdatePacketNumberLength(least_packet_awaited_by_peer, max_packets_in_flight);
811 } 835 }
812 836
813 } // namespace net 837 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_packet_creator.h ('k') | net/quic/quic_packet_creator_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698