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

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

Issue 1399893005: relnote: Inline all frames smaller than a pointer into QuicFrame. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Avoid_redundant_recvmmsg_104327020
Patch Set: Created 5 years, 2 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/quic_packet_creator_test.cc ('k') | net/quic/quic_protocol.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 (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_generator.h" 5 #include "net/quic/quic_packet_generator.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "net/quic/quic_ack_notifier.h" 9 #include "net/quic/quic_ack_notifier.h"
10 #include "net/quic/quic_fec_group.h" 10 #include "net/quic/quic_fec_group.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 should_send_ack_(false), 50 should_send_ack_(false),
51 should_send_stop_waiting_(false), 51 should_send_stop_waiting_(false),
52 ack_queued_(false), 52 ack_queued_(false),
53 stop_waiting_queued_(false), 53 stop_waiting_queued_(false),
54 max_packet_length_(kDefaultMaxPacketSize) {} 54 max_packet_length_(kDefaultMaxPacketSize) {}
55 55
56 QuicPacketGenerator::~QuicPacketGenerator() { 56 QuicPacketGenerator::~QuicPacketGenerator() {
57 for (QuicFrame& frame : queued_control_frames_) { 57 for (QuicFrame& frame : queued_control_frames_) {
58 switch (frame.type) { 58 switch (frame.type) {
59 case PADDING_FRAME: 59 case PADDING_FRAME:
60 delete frame.padding_frame; 60 case MTU_DISCOVERY_FRAME:
61 case PING_FRAME:
62 case BLOCKED_FRAME:
61 break; 63 break;
62 case STREAM_FRAME: 64 case STREAM_FRAME:
63 delete frame.stream_frame; 65 delete frame.stream_frame;
64 break; 66 break;
65 case ACK_FRAME: 67 case ACK_FRAME:
66 delete frame.ack_frame; 68 delete frame.ack_frame;
67 break; 69 break;
68 case MTU_DISCOVERY_FRAME:
69 delete frame.mtu_discovery_frame;
70 break;
71 case RST_STREAM_FRAME: 70 case RST_STREAM_FRAME:
72 delete frame.rst_stream_frame; 71 delete frame.rst_stream_frame;
73 break; 72 break;
74 case CONNECTION_CLOSE_FRAME: 73 case CONNECTION_CLOSE_FRAME:
75 delete frame.connection_close_frame; 74 delete frame.connection_close_frame;
76 break; 75 break;
77 case GOAWAY_FRAME: 76 case GOAWAY_FRAME:
78 delete frame.goaway_frame; 77 delete frame.goaway_frame;
79 break; 78 break;
80 case WINDOW_UPDATE_FRAME: 79 case WINDOW_UPDATE_FRAME:
81 delete frame.window_update_frame; 80 delete frame.window_update_frame;
82 break; 81 break;
83 case BLOCKED_FRAME:
84 delete frame.blocked_frame;
85 break;
86 case STOP_WAITING_FRAME: 82 case STOP_WAITING_FRAME:
87 delete frame.stop_waiting_frame; 83 delete frame.stop_waiting_frame;
88 break; 84 break;
89 case PING_FRAME:
90 delete frame.ping_frame;
91 break;
92 case NUM_FRAME_TYPES: 85 case NUM_FRAME_TYPES:
93 DCHECK(false) << "Cannot delete type: " << frame.type; 86 DCHECK(false) << "Cannot delete type: " << frame.type;
94 } 87 }
95 } 88 }
96 } 89 }
97 90
98 void QuicPacketGenerator::OnCongestionWindowChange( 91 void QuicPacketGenerator::OnCongestionWindowChange(
99 QuicPacketCount max_packets_in_flight) { 92 QuicPacketCount max_packets_in_flight) {
100 packet_creator_.set_max_packets_per_fec_group( 93 packet_creator_.set_max_packets_per_fec_group(
101 static_cast<size_t>(kMaxPacketsInFlightMultiplierForFecGroupSize * 94 static_cast<size_t>(kMaxPacketsInFlightMultiplierForFecGroupSize *
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 // The notifier manager will take the ownership of the notifier after the 236 // The notifier manager will take the ownership of the notifier after the
244 // packet is sent. 237 // packet is sent.
245 ack_notifiers_.push_back(ack_notifier); 238 ack_notifiers_.push_back(ack_notifier);
246 } 239 }
247 240
248 const QuicByteCount current_mtu = GetMaxPacketLength(); 241 const QuicByteCount current_mtu = GetMaxPacketLength();
249 242
250 // The MTU discovery frame is allocated on the stack, since it is going to be 243 // The MTU discovery frame is allocated on the stack, since it is going to be
251 // serialized within this function. 244 // serialized within this function.
252 QuicMtuDiscoveryFrame mtu_discovery_frame; 245 QuicMtuDiscoveryFrame mtu_discovery_frame;
253 QuicFrame frame(&mtu_discovery_frame); 246 QuicFrame frame(mtu_discovery_frame);
254 247
255 // Send the probe packet with the new length. 248 // Send the probe packet with the new length.
256 SetMaxPacketLength(target_mtu, /*force=*/true); 249 SetMaxPacketLength(target_mtu, /*force=*/true);
257 const bool success = AddFrame(frame, nullptr, /*needs_padding=*/true); 250 const bool success = AddFrame(frame, nullptr, /*needs_padding=*/true);
258 SerializeAndSendPacket(); 251 SerializeAndSendPacket();
259 // The only reason AddFrame can fail is that the packet is too full to fit in 252 // The only reason AddFrame can fail is that the packet is too full to fit in
260 // a ping. This is not possible for any sane MTU. 253 // a ping. This is not possible for any sane MTU.
261 DCHECK(success); 254 DCHECK(success);
262 255
263 // Reset the packet length back. 256 // Reset the packet length back.
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 void QuicPacketGenerator::set_encryption_level(EncryptionLevel level) { 546 void QuicPacketGenerator::set_encryption_level(EncryptionLevel level) {
554 packet_creator_.set_encryption_level(level); 547 packet_creator_.set_encryption_level(level);
555 } 548 }
556 549
557 void QuicPacketGenerator::SetEncrypter(EncryptionLevel level, 550 void QuicPacketGenerator::SetEncrypter(EncryptionLevel level,
558 QuicEncrypter* encrypter) { 551 QuicEncrypter* encrypter) {
559 packet_creator_.SetEncrypter(level, encrypter); 552 packet_creator_.SetEncrypter(level, encrypter);
560 } 553 }
561 554
562 } // namespace net 555 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_packet_creator_test.cc ('k') | net/quic/quic_protocol.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698