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

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

Issue 181483006: PACKET_NBYTE_GUID -> PACKET_NBYTE_CONNECTION_ID (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: small comment fix Created 6 years, 9 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 | Annotate | Revision Log
« 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 "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "net/quic/crypto/quic_random.h" 9 #include "net/quic/crypto/quic_random.h"
10 #include "net/quic/quic_ack_notifier.h" 10 #include "net/quic/quic_ack_notifier.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 // Source of entropy. 48 // Source of entropy.
49 QuicRandom* random_; 49 QuicRandom* random_;
50 // Stored random bits. 50 // Stored random bits.
51 uint64 bit_bucket_; 51 uint64 bit_bucket_;
52 // The next available bit has "1" in the mask. Zero means empty bucket. 52 // The next available bit has "1" in the mask. Zero means empty bucket.
53 uint64 bit_mask_; 53 uint64 bit_mask_;
54 54
55 DISALLOW_COPY_AND_ASSIGN(QuicRandomBoolSource); 55 DISALLOW_COPY_AND_ASSIGN(QuicRandomBoolSource);
56 }; 56 };
57 57
58 QuicPacketCreator::QuicPacketCreator(QuicGuid guid, 58 QuicPacketCreator::QuicPacketCreator(QuicConnectionId connection_id,
59 QuicFramer* framer, 59 QuicFramer* framer,
60 QuicRandom* random_generator, 60 QuicRandom* random_generator,
61 bool is_server) 61 bool is_server)
62 : guid_(guid), 62 : connection_id_(connection_id),
63 framer_(framer), 63 framer_(framer),
64 random_bool_source_(new QuicRandomBoolSource(random_generator)), 64 random_bool_source_(new QuicRandomBoolSource(random_generator)),
65 sequence_number_(0), 65 sequence_number_(0),
66 fec_group_number_(0), 66 fec_group_number_(0),
67 is_server_(is_server), 67 is_server_(is_server),
68 send_version_in_packet_(!is_server), 68 send_version_in_packet_(!is_server),
69 sequence_number_length_(options_.send_sequence_number_length), 69 sequence_number_length_(options_.send_sequence_number_length),
70 packet_size_(0) { 70 packet_size_(0) {
71 framer_->set_fec_builder(this); 71 framer_->set_fec_builder(this);
72 } 72 }
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 130
131 bool QuicPacketCreator::HasRoomForStreamFrame(QuicStreamId id, 131 bool QuicPacketCreator::HasRoomForStreamFrame(QuicStreamId id,
132 QuicStreamOffset offset) const { 132 QuicStreamOffset offset) const {
133 return BytesFree() > 133 return BytesFree() >
134 QuicFramer::GetMinStreamFrameSize(framer_->version(), id, offset, true); 134 QuicFramer::GetMinStreamFrameSize(framer_->version(), id, offset, true);
135 } 135 }
136 136
137 // static 137 // static
138 size_t QuicPacketCreator::StreamFramePacketOverhead( 138 size_t QuicPacketCreator::StreamFramePacketOverhead(
139 QuicVersion version, 139 QuicVersion version,
140 QuicGuidLength guid_length, 140 QuicConnectionIdLength connection_id_length,
141 bool include_version, 141 bool include_version,
142 QuicSequenceNumberLength sequence_number_length, 142 QuicSequenceNumberLength sequence_number_length,
143 InFecGroup is_in_fec_group) { 143 InFecGroup is_in_fec_group) {
144 return GetPacketHeaderSize(guid_length, include_version, 144 return GetPacketHeaderSize(connection_id_length, include_version,
145 sequence_number_length, is_in_fec_group) + 145 sequence_number_length, is_in_fec_group) +
146 // Assumes this is a stream with a single lone packet. 146 // Assumes this is a stream with a single lone packet.
147 QuicFramer::GetMinStreamFrameSize(version, 1u, 0u, true); 147 QuicFramer::GetMinStreamFrameSize(version, 1u, 0u, true);
148 } 148 }
149 149
150 size_t QuicPacketCreator::CreateStreamFrame(QuicStreamId id, 150 size_t QuicPacketCreator::CreateStreamFrame(QuicStreamId id,
151 const IOVector& data, 151 const IOVector& data,
152 QuicStreamOffset offset, 152 QuicStreamOffset offset,
153 bool fin, 153 bool fin,
154 QuicFrame* frame) { 154 QuicFrame* frame) {
155 DCHECK_GT(options_.max_packet_length, 155 DCHECK_GT(options_.max_packet_length,
156 StreamFramePacketOverhead( 156 StreamFramePacketOverhead(
157 framer_->version(), PACKET_8BYTE_GUID, kIncludeVersion, 157 framer_->version(), PACKET_8BYTE_CONNECTION_ID, kIncludeVersion,
158 PACKET_6BYTE_SEQUENCE_NUMBER, IN_FEC_GROUP)); 158 PACKET_6BYTE_SEQUENCE_NUMBER, IN_FEC_GROUP));
159 if (!HasRoomForStreamFrame(id, offset)) { 159 if (!HasRoomForStreamFrame(id, offset)) {
160 LOG(DFATAL) << "No room for Stream frame, BytesFree: " << BytesFree() 160 LOG(DFATAL) << "No room for Stream frame, BytesFree: " << BytesFree()
161 << " MinStreamFrameSize: " 161 << " MinStreamFrameSize: "
162 << QuicFramer::GetMinStreamFrameSize( 162 << QuicFramer::GetMinStreamFrameSize(
163 framer_->version(), id, offset, true); 163 framer_->version(), id, offset, true);
164 } 164 }
165 165
166 if (data.Empty()) { 166 if (data.Empty()) {
167 if (!fin) { 167 if (!fin) {
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 } 292 }
293 293
294 size_t QuicPacketCreator::PacketSize() const { 294 size_t QuicPacketCreator::PacketSize() const {
295 if (queued_frames_.empty()) { 295 if (queued_frames_.empty()) {
296 // Only adjust the sequence number length when the FEC group is not open, 296 // Only adjust the sequence number length when the FEC group is not open,
297 // to ensure no packets in a group are too large. 297 // to ensure no packets in a group are too large.
298 if (fec_group_.get() == NULL || 298 if (fec_group_.get() == NULL ||
299 fec_group_->NumReceivedPackets() == 0) { 299 fec_group_->NumReceivedPackets() == 0) {
300 sequence_number_length_ = options_.send_sequence_number_length; 300 sequence_number_length_ = options_.send_sequence_number_length;
301 } 301 }
302 packet_size_ = GetPacketHeaderSize(options_.send_guid_length, 302 packet_size_ = GetPacketHeaderSize(options_.send_connection_id_length,
303 send_version_in_packet_, 303 send_version_in_packet_,
304 sequence_number_length_, 304 sequence_number_length_,
305 options_.max_packets_per_fec_group == 0 ? 305 options_.max_packets_per_fec_group == 0 ?
306 NOT_IN_FEC_GROUP : IN_FEC_GROUP); 306 NOT_IN_FEC_GROUP : IN_FEC_GROUP);
307 } 307 }
308 return packet_size_; 308 return packet_size_;
309 } 309 }
310 310
311 bool QuicPacketCreator::AddSavedFrame(const QuicFrame& frame) { 311 bool QuicPacketCreator::AddSavedFrame(const QuicFrame& frame) {
312 return AddFrame(frame, true); 312 return AddFrame(frame, true);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 QuicConnectionCloseFrame* close_frame) { 373 QuicConnectionCloseFrame* close_frame) {
374 QuicFrames frames; 374 QuicFrames frames;
375 frames.push_back(QuicFrame(close_frame)); 375 frames.push_back(QuicFrame(close_frame));
376 return SerializeAllFrames(frames); 376 return SerializeAllFrames(frames);
377 } 377 }
378 378
379 QuicEncryptedPacket* QuicPacketCreator::SerializeVersionNegotiationPacket( 379 QuicEncryptedPacket* QuicPacketCreator::SerializeVersionNegotiationPacket(
380 const QuicVersionVector& supported_versions) { 380 const QuicVersionVector& supported_versions) {
381 DCHECK(is_server_); 381 DCHECK(is_server_);
382 QuicPacketPublicHeader header; 382 QuicPacketPublicHeader header;
383 header.guid = guid_; 383 header.connection_id = connection_id_;
384 header.reset_flag = false; 384 header.reset_flag = false;
385 header.version_flag = true; 385 header.version_flag = true;
386 header.versions = supported_versions; 386 header.versions = supported_versions;
387 QuicEncryptedPacket* encrypted = 387 QuicEncryptedPacket* encrypted =
388 framer_->BuildVersionNegotiationPacket(header, supported_versions); 388 framer_->BuildVersionNegotiationPacket(header, supported_versions);
389 DCHECK(encrypted); 389 DCHECK(encrypted);
390 DCHECK_GE(options_.max_packet_length, encrypted->length()); 390 DCHECK_GE(options_.max_packet_length, encrypted->length());
391 return encrypted; 391 return encrypted;
392 } 392 }
393 393
394 void QuicPacketCreator::FillPacketHeader(QuicFecGroupNumber fec_group, 394 void QuicPacketCreator::FillPacketHeader(QuicFecGroupNumber fec_group,
395 bool fec_flag, 395 bool fec_flag,
396 QuicPacketHeader* header) { 396 QuicPacketHeader* header) {
397 header->public_header.guid = guid_; 397 header->public_header.connection_id = connection_id_;
398 header->public_header.reset_flag = false; 398 header->public_header.reset_flag = false;
399 header->public_header.version_flag = send_version_in_packet_; 399 header->public_header.version_flag = send_version_in_packet_;
400 header->fec_flag = fec_flag; 400 header->fec_flag = fec_flag;
401 header->packet_sequence_number = ++sequence_number_; 401 header->packet_sequence_number = ++sequence_number_;
402 header->public_header.sequence_number_length = sequence_number_length_; 402 header->public_header.sequence_number_length = sequence_number_length_;
403 header->entropy_flag = random_bool_source_->RandBool(); 403 header->entropy_flag = random_bool_source_->RandBool();
404 header->is_in_fec_group = fec_group == 0 ? NOT_IN_FEC_GROUP : IN_FEC_GROUP; 404 header->is_in_fec_group = fec_group == 0 ? NOT_IN_FEC_GROUP : IN_FEC_GROUP;
405 header->fec_group = fec_group; 405 header->fec_group = fec_group;
406 } 406 }
407 407
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 if (!is_handshake) { 470 if (!is_handshake) {
471 return; 471 return;
472 } 472 }
473 473
474 QuicPaddingFrame padding; 474 QuicPaddingFrame padding;
475 bool success = AddFrame(QuicFrame(&padding), false); 475 bool success = AddFrame(QuicFrame(&padding), false);
476 DCHECK(success); 476 DCHECK(success);
477 } 477 }
478 478
479 } // namespace net 479 } // 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