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 |