| 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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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(QuicConnectionId connection_id, | 58 QuicPacketCreator::QuicPacketCreator(QuicConnectionId connection_id, |
| 59 QuicFramer* framer, | 59 QuicFramer* framer, |
| 60 QuicRandom* random_generator, | 60 QuicRandom* random_generator) |
| 61 bool is_server) | |
| 62 : connection_id_(connection_id), | 61 : connection_id_(connection_id), |
| 63 encryption_level_(ENCRYPTION_NONE), | 62 encryption_level_(ENCRYPTION_NONE), |
| 64 framer_(framer), | 63 framer_(framer), |
| 65 random_bool_source_(new QuicRandomBoolSource(random_generator)), | 64 random_bool_source_(new QuicRandomBoolSource(random_generator)), |
| 66 sequence_number_(0), | 65 sequence_number_(0), |
| 67 should_fec_protect_(false), | 66 should_fec_protect_(false), |
| 68 fec_group_number_(0), | 67 fec_group_number_(0), |
| 69 is_server_(is_server), | 68 send_version_in_packet_(!framer->is_server()), |
| 70 send_version_in_packet_(!is_server), | |
| 71 max_packet_length_(kDefaultMaxPacketSize), | 69 max_packet_length_(kDefaultMaxPacketSize), |
| 72 max_packets_per_fec_group_(0), | 70 max_packets_per_fec_group_(0), |
| 73 connection_id_length_(PACKET_8BYTE_CONNECTION_ID), | 71 connection_id_length_(PACKET_8BYTE_CONNECTION_ID), |
| 74 next_sequence_number_length_(PACKET_1BYTE_SEQUENCE_NUMBER), | 72 next_sequence_number_length_(PACKET_1BYTE_SEQUENCE_NUMBER), |
| 75 sequence_number_length_(next_sequence_number_length_), | 73 sequence_number_length_(next_sequence_number_length_), |
| 76 packet_size_(0) { | 74 packet_size_(0) { |
| 77 framer_->set_fec_builder(this); | 75 framer_->set_fec_builder(this); |
| 78 } | 76 } |
| 79 | 77 |
| 80 QuicPacketCreator::~QuicPacketCreator() { | 78 QuicPacketCreator::~QuicPacketCreator() { |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 409 | 407 |
| 410 SerializedPacket QuicPacketCreator::SerializeConnectionClose( | 408 SerializedPacket QuicPacketCreator::SerializeConnectionClose( |
| 411 QuicConnectionCloseFrame* close_frame) { | 409 QuicConnectionCloseFrame* close_frame) { |
| 412 QuicFrames frames; | 410 QuicFrames frames; |
| 413 frames.push_back(QuicFrame(close_frame)); | 411 frames.push_back(QuicFrame(close_frame)); |
| 414 return SerializeAllFrames(frames); | 412 return SerializeAllFrames(frames); |
| 415 } | 413 } |
| 416 | 414 |
| 417 QuicEncryptedPacket* QuicPacketCreator::SerializeVersionNegotiationPacket( | 415 QuicEncryptedPacket* QuicPacketCreator::SerializeVersionNegotiationPacket( |
| 418 const QuicVersionVector& supported_versions) { | 416 const QuicVersionVector& supported_versions) { |
| 419 DCHECK(is_server_); | 417 DCHECK(framer_->is_server()); |
| 420 QuicPacketPublicHeader header; | 418 QuicPacketPublicHeader header; |
| 421 header.connection_id = connection_id_; | 419 header.connection_id = connection_id_; |
| 422 header.reset_flag = false; | 420 header.reset_flag = false; |
| 423 header.version_flag = true; | 421 header.version_flag = true; |
| 424 header.versions = supported_versions; | 422 header.versions = supported_versions; |
| 425 QuicEncryptedPacket* encrypted = | 423 QuicEncryptedPacket* encrypted = |
| 426 framer_->BuildVersionNegotiationPacket(header, supported_versions); | 424 framer_->BuildVersionNegotiationPacket(header, supported_versions); |
| 427 DCHECK(encrypted); | 425 DCHECK(encrypted); |
| 428 DCHECK_GE(max_packet_length_, encrypted->length()); | 426 DCHECK_GE(max_packet_length_, encrypted->length()); |
| 429 return encrypted; | 427 return encrypted; |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 505 if (!is_handshake) { | 503 if (!is_handshake) { |
| 506 return; | 504 return; |
| 507 } | 505 } |
| 508 | 506 |
| 509 QuicPaddingFrame padding; | 507 QuicPaddingFrame padding; |
| 510 bool success = AddFrame(QuicFrame(&padding), false); | 508 bool success = AddFrame(QuicFrame(&padding), false); |
| 511 DCHECK(success); | 509 DCHECK(success); |
| 512 } | 510 } |
| 513 | 511 |
| 514 } // namespace net | 512 } // namespace net |
| OLD | NEW |