| 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 |