| 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_protocol.h" | 5 #include "net/quic/quic_protocol.h" |
| 6 | 6 |
| 7 #include "base/stl_util.h" | 7 #include "base/stl_util.h" |
| 8 #include "net/quic/quic_utils.h" | 8 #include "net/quic/quic_utils.h" |
| 9 | 9 |
| 10 using base::StringPiece; | 10 using base::StringPiece; |
| (...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 615 | 615 |
| 616 StringPiece QuicPacket::Plaintext() const { | 616 StringPiece QuicPacket::Plaintext() const { |
| 617 const size_t start_of_encrypted_data = | 617 const size_t start_of_encrypted_data = |
| 618 GetStartOfEncryptedData( | 618 GetStartOfEncryptedData( |
| 619 connection_id_length_, includes_version_, sequence_number_length_); | 619 connection_id_length_, includes_version_, sequence_number_length_); |
| 620 return StringPiece(data() + start_of_encrypted_data, | 620 return StringPiece(data() + start_of_encrypted_data, |
| 621 length() - start_of_encrypted_data); | 621 length() - start_of_encrypted_data); |
| 622 } | 622 } |
| 623 | 623 |
| 624 RetransmittableFrames::RetransmittableFrames() | 624 RetransmittableFrames::RetransmittableFrames() |
| 625 : encryption_level_(NUM_ENCRYPTION_LEVELS) { | 625 : encryption_level_(NUM_ENCRYPTION_LEVELS), |
| 626 has_crypto_handshake_(NOT_HANDSHAKE) { |
| 626 } | 627 } |
| 627 | 628 |
| 628 RetransmittableFrames::~RetransmittableFrames() { | 629 RetransmittableFrames::~RetransmittableFrames() { |
| 629 for (QuicFrames::iterator it = frames_.begin(); it != frames_.end(); ++it) { | 630 for (QuicFrames::iterator it = frames_.begin(); it != frames_.end(); ++it) { |
| 630 switch (it->type) { | 631 switch (it->type) { |
| 631 case PADDING_FRAME: | 632 case PADDING_FRAME: |
| 632 delete it->padding_frame; | 633 delete it->padding_frame; |
| 633 break; | 634 break; |
| 634 case STREAM_FRAME: | 635 case STREAM_FRAME: |
| 635 delete it->stream_frame; | 636 delete it->stream_frame; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 670 | 671 |
| 671 const QuicFrame& RetransmittableFrames::AddStreamFrame( | 672 const QuicFrame& RetransmittableFrames::AddStreamFrame( |
| 672 QuicStreamFrame* stream_frame) { | 673 QuicStreamFrame* stream_frame) { |
| 673 // Make an owned copy of the stream frame's data. | 674 // Make an owned copy of the stream frame's data. |
| 674 stream_data_.push_back(stream_frame->GetDataAsString()); | 675 stream_data_.push_back(stream_frame->GetDataAsString()); |
| 675 // Ensure the stream frame's IOVector points to the owned copy of the data. | 676 // Ensure the stream frame's IOVector points to the owned copy of the data. |
| 676 stream_frame->data.Clear(); | 677 stream_frame->data.Clear(); |
| 677 stream_frame->data.Append(const_cast<char*>(stream_data_.back()->data()), | 678 stream_frame->data.Append(const_cast<char*>(stream_data_.back()->data()), |
| 678 stream_data_.back()->size()); | 679 stream_data_.back()->size()); |
| 679 frames_.push_back(QuicFrame(stream_frame)); | 680 frames_.push_back(QuicFrame(stream_frame)); |
| 681 if (stream_frame->stream_id == kCryptoStreamId) { |
| 682 has_crypto_handshake_ = IS_HANDSHAKE; |
| 683 } |
| 680 return frames_.back(); | 684 return frames_.back(); |
| 681 } | 685 } |
| 682 | 686 |
| 683 const QuicFrame& RetransmittableFrames::AddNonStreamFrame( | 687 const QuicFrame& RetransmittableFrames::AddNonStreamFrame( |
| 684 const QuicFrame& frame) { | 688 const QuicFrame& frame) { |
| 685 DCHECK_NE(frame.type, STREAM_FRAME); | 689 DCHECK_NE(frame.type, STREAM_FRAME); |
| 686 frames_.push_back(frame); | 690 frames_.push_back(frame); |
| 687 return frames_.back(); | 691 return frames_.back(); |
| 688 } | 692 } |
| 689 | 693 |
| 690 IsHandshake RetransmittableFrames::HasCryptoHandshake() const { | |
| 691 for (size_t i = 0; i < frames().size(); ++i) { | |
| 692 if (frames()[i].type == STREAM_FRAME && | |
| 693 frames()[i].stream_frame->stream_id == kCryptoStreamId) { | |
| 694 return IS_HANDSHAKE; | |
| 695 } | |
| 696 } | |
| 697 return NOT_HANDSHAKE; | |
| 698 } | |
| 699 | |
| 700 void RetransmittableFrames::set_encryption_level(EncryptionLevel level) { | 694 void RetransmittableFrames::set_encryption_level(EncryptionLevel level) { |
| 701 encryption_level_ = level; | 695 encryption_level_ = level; |
| 702 } | 696 } |
| 703 | 697 |
| 704 SerializedPacket::SerializedPacket( | 698 SerializedPacket::SerializedPacket( |
| 705 QuicPacketSequenceNumber sequence_number, | 699 QuicPacketSequenceNumber sequence_number, |
| 706 QuicSequenceNumberLength sequence_number_length, | 700 QuicSequenceNumberLength sequence_number_length, |
| 707 QuicPacket* packet, | 701 QuicPacket* packet, |
| 708 QuicPacketEntropyHash entropy_hash, | 702 QuicPacketEntropyHash entropy_hash, |
| 709 RetransmittableFrames* retransmittable_frames) | 703 RetransmittableFrames* retransmittable_frames) |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 763 sent_time(QuicTime::Zero()), | 757 sent_time(QuicTime::Zero()), |
| 764 bytes_sent(0), | 758 bytes_sent(0), |
| 765 nack_count(0), | 759 nack_count(0), |
| 766 transmission_type(transmission_type), | 760 transmission_type(transmission_type), |
| 767 all_transmissions(all_transmissions), | 761 all_transmissions(all_transmissions), |
| 768 in_flight(false) { | 762 in_flight(false) { |
| 769 all_transmissions->insert(sequence_number); | 763 all_transmissions->insert(sequence_number); |
| 770 } | 764 } |
| 771 | 765 |
| 772 } // namespace net | 766 } // namespace net |
| OLD | NEW |