OLD | NEW |
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 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 // Assumes this is a stream with a single lone packet. | 224 // Assumes this is a stream with a single lone packet. |
225 QuicFramer::GetMinStreamFrameSize(1u, offset, true, is_in_fec_group); | 225 QuicFramer::GetMinStreamFrameSize(1u, offset, true, is_in_fec_group); |
226 } | 226 } |
227 | 227 |
228 size_t QuicPacketCreator::CreateStreamFrame(QuicStreamId id, | 228 size_t QuicPacketCreator::CreateStreamFrame(QuicStreamId id, |
229 const IOVector& data, | 229 const IOVector& data, |
230 QuicStreamOffset offset, | 230 QuicStreamOffset offset, |
231 bool fin, | 231 bool fin, |
232 QuicFrame* frame) { | 232 QuicFrame* frame) { |
233 DCHECK_GT(max_packet_length_, StreamFramePacketOverhead( | 233 DCHECK_GT(max_packet_length_, StreamFramePacketOverhead( |
234 PACKET_8BYTE_CONNECTION_ID, kIncludeVersion, | 234 connection_id_length_, kIncludeVersion, |
235 PACKET_6BYTE_SEQUENCE_NUMBER, offset, IN_FEC_GROUP)); | 235 PACKET_6BYTE_SEQUENCE_NUMBER, offset, IN_FEC_GROUP)); |
236 | 236 |
237 InFecGroup is_in_fec_group = MaybeUpdateLengthsAndStartFec(); | 237 InFecGroup is_in_fec_group = MaybeUpdateLengthsAndStartFec(); |
238 | 238 |
239 LOG_IF(DFATAL, !HasRoomForStreamFrame(id, offset)) | 239 LOG_IF(DFATAL, !HasRoomForStreamFrame(id, offset)) |
240 << "No room for Stream frame, BytesFree: " << BytesFree() | 240 << "No room for Stream frame, BytesFree: " << BytesFree() |
241 << " MinStreamFrameSize: " | 241 << " MinStreamFrameSize: " |
242 << QuicFramer::GetMinStreamFrameSize(id, offset, true, is_in_fec_group); | 242 << QuicFramer::GetMinStreamFrameSize(id, offset, true, is_in_fec_group); |
243 | 243 |
244 if (data.Empty()) { | 244 if (data.Empty()) { |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 framer_->BuildVersionNegotiationPacket(header, supported_versions); | 443 framer_->BuildVersionNegotiationPacket(header, supported_versions); |
444 DCHECK(encrypted); | 444 DCHECK(encrypted); |
445 DCHECK_GE(max_packet_length_, encrypted->length()); | 445 DCHECK_GE(max_packet_length_, encrypted->length()); |
446 return encrypted; | 446 return encrypted; |
447 } | 447 } |
448 | 448 |
449 void QuicPacketCreator::FillPacketHeader(QuicFecGroupNumber fec_group, | 449 void QuicPacketCreator::FillPacketHeader(QuicFecGroupNumber fec_group, |
450 bool fec_flag, | 450 bool fec_flag, |
451 QuicPacketHeader* header) { | 451 QuicPacketHeader* header) { |
452 header->public_header.connection_id = connection_id_; | 452 header->public_header.connection_id = connection_id_; |
| 453 header->public_header.connection_id_length = connection_id_length_; |
453 header->public_header.reset_flag = false; | 454 header->public_header.reset_flag = false; |
454 header->public_header.version_flag = send_version_in_packet_; | 455 header->public_header.version_flag = send_version_in_packet_; |
455 header->fec_flag = fec_flag; | 456 header->fec_flag = fec_flag; |
456 header->packet_sequence_number = ++sequence_number_; | 457 header->packet_sequence_number = ++sequence_number_; |
457 header->public_header.sequence_number_length = sequence_number_length_; | 458 header->public_header.sequence_number_length = sequence_number_length_; |
458 header->entropy_flag = random_bool_source_->RandBool(); | 459 header->entropy_flag = random_bool_source_->RandBool(); |
459 header->is_in_fec_group = fec_group == 0 ? NOT_IN_FEC_GROUP : IN_FEC_GROUP; | 460 header->is_in_fec_group = fec_group == 0 ? NOT_IN_FEC_GROUP : IN_FEC_GROUP; |
460 header->fec_group = fec_group; | 461 header->fec_group = fec_group; |
461 } | 462 } |
462 | 463 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
513 if (BytesFree() == 0) { | 514 if (BytesFree() == 0) { |
514 // Don't pad full packets. | 515 // Don't pad full packets. |
515 return; | 516 return; |
516 } | 517 } |
517 QuicPaddingFrame padding; | 518 QuicPaddingFrame padding; |
518 bool success = AddFrame(QuicFrame(&padding), false); | 519 bool success = AddFrame(QuicFrame(&padding), false); |
519 DCHECK(success); | 520 DCHECK(success); |
520 } | 521 } |
521 | 522 |
522 } // namespace net | 523 } // namespace net |
OLD | NEW |