Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1185)

Side by Side Diff: net/quic/quic_session.cc

Issue 1421633002: Rename GetNextStreamId to GetNextOutgoingStreamId in QuicSession. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@105530242
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/quic_session.h ('k') | net/quic/quic_session_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_session.h" 5 #include "net/quic/quic_session.h"
6 6
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "net/quic/crypto/proof_verifier.h" 8 #include "net/quic/crypto/proof_verifier.h"
9 #include "net/quic/quic_connection.h" 9 #include "net/quic/quic_connection.h"
10 #include "net/quic/quic_flags.h" 10 #include "net/quic/quic_flags.h"
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 96
97 private: 97 private:
98 QuicSession* session_; 98 QuicSession* session_;
99 }; 99 };
100 100
101 QuicSession::QuicSession(QuicConnection* connection, const QuicConfig& config) 101 QuicSession::QuicSession(QuicConnection* connection, const QuicConfig& config)
102 : connection_(connection), 102 : connection_(connection),
103 visitor_shim_(new VisitorShim(this)), 103 visitor_shim_(new VisitorShim(this)),
104 config_(config), 104 config_(config),
105 max_open_streams_(config_.MaxStreamsPerConnection()), 105 max_open_streams_(config_.MaxStreamsPerConnection()),
106 next_stream_id_(perspective() == Perspective::IS_SERVER ? 2 : 3), 106 next_outgoing_stream_id_(perspective() == Perspective::IS_SERVER ? 2 : 3),
107 largest_peer_created_stream_id_( 107 largest_peer_created_stream_id_(
108 perspective() == Perspective::IS_SERVER ? 1 : 0), 108 perspective() == Perspective::IS_SERVER ? 1 : 0),
109 error_(QUIC_NO_ERROR), 109 error_(QUIC_NO_ERROR),
110 flow_controller_(connection_.get(), 110 flow_controller_(connection_.get(),
111 0, 111 0,
112 perspective(), 112 perspective(),
113 kMinimumFlowControlSendWindow, 113 kMinimumFlowControlSendWindow,
114 config_.GetInitialSessionFlowControlWindowToSend(), 114 config_.GetInitialSessionFlowControlWindowToSend(),
115 false), 115 false),
116 has_pending_handshake_(false) { 116 has_pending_handshake_(false) {}
117 }
118 117
119 void QuicSession::Initialize() { 118 void QuicSession::Initialize() {
120 connection_->set_visitor(visitor_shim_.get()); 119 connection_->set_visitor(visitor_shim_.get());
121 connection_->SetFromConfig(config_); 120 connection_->SetFromConfig(config_);
122 121
123 DCHECK_EQ(kCryptoStreamId, GetCryptoStream()->id()); 122 DCHECK_EQ(kCryptoStreamId, GetCryptoStream()->id());
124 static_stream_map_[kCryptoStreamId] = GetCryptoStream(); 123 static_stream_map_[kCryptoStreamId] = GetCryptoStream();
125 } 124 }
126 125
127 QuicSession::~QuicSession() { 126 QuicSession::~QuicSession() {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 // update the connection level flow controller if needed. 163 // update the connection level flow controller if needed.
165 UpdateFlowControlOnFinalReceivedByteOffset(frame.stream_id, 164 UpdateFlowControlOnFinalReceivedByteOffset(frame.stream_id,
166 frame.byte_offset); 165 frame.byte_offset);
167 return; // Errors are handled by GetStream. 166 return; // Errors are handled by GetStream.
168 } 167 }
169 168
170 stream->OnStreamReset(frame); 169 stream->OnStreamReset(frame);
171 } 170 }
172 171
173 void QuicSession::OnGoAway(const QuicGoAwayFrame& frame) { 172 void QuicSession::OnGoAway(const QuicGoAwayFrame& frame) {
174 DCHECK(frame.last_good_stream_id < next_stream_id_); 173 DCHECK(frame.last_good_stream_id < next_outgoing_stream_id_);
175 } 174 }
176 175
177 void QuicSession::OnConnectionClosed(QuicErrorCode error, bool from_peer) { 176 void QuicSession::OnConnectionClosed(QuicErrorCode error, bool from_peer) {
178 DCHECK(!connection_->connected()); 177 DCHECK(!connection_->connected());
179 if (error_ == QUIC_NO_ERROR) { 178 if (error_ == QUIC_NO_ERROR) {
180 error_ = error; 179 error_ = error;
181 } 180 }
182 181
183 while (!dynamic_stream_map_.empty()) { 182 while (!dynamic_stream_map_.empty()) {
184 StreamMap::iterator it = dynamic_stream_map_.begin(); 183 StreamMap::iterator it = dynamic_stream_map_.begin();
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 void QuicSession::ActivateStream(ReliableQuicStream* stream) { 552 void QuicSession::ActivateStream(ReliableQuicStream* stream) {
554 DVLOG(1) << ENDPOINT << "num_streams: " << dynamic_stream_map_.size() 553 DVLOG(1) << ENDPOINT << "num_streams: " << dynamic_stream_map_.size()
555 << ". activating " << stream->id(); 554 << ". activating " << stream->id();
556 DCHECK(!ContainsKey(dynamic_stream_map_, stream->id())); 555 DCHECK(!ContainsKey(dynamic_stream_map_, stream->id()));
557 DCHECK(!ContainsKey(static_stream_map_, stream->id())); 556 DCHECK(!ContainsKey(static_stream_map_, stream->id()));
558 dynamic_stream_map_[stream->id()] = stream; 557 dynamic_stream_map_[stream->id()] = stream;
559 // Increase the number of streams being emulated when a new one is opened. 558 // Increase the number of streams being emulated when a new one is opened.
560 connection_->SetNumOpenStreams(dynamic_stream_map_.size()); 559 connection_->SetNumOpenStreams(dynamic_stream_map_.size());
561 } 560 }
562 561
563 QuicStreamId QuicSession::GetNextStreamId() { 562 QuicStreamId QuicSession::GetNextOutgoingStreamId() {
564 QuicStreamId id = next_stream_id_; 563 QuicStreamId id = next_outgoing_stream_id_;
565 next_stream_id_ += 2; 564 next_outgoing_stream_id_ += 2;
566 return id; 565 return id;
567 } 566 }
568 567
569 ReliableQuicStream* QuicSession::GetStream(const QuicStreamId stream_id) { 568 ReliableQuicStream* QuicSession::GetStream(const QuicStreamId stream_id) {
570 StreamMap::iterator it = static_stream_map_.find(stream_id); 569 StreamMap::iterator it = static_stream_map_.find(stream_id);
571 if (it != static_stream_map_.end()) { 570 if (it != static_stream_map_.end()) {
572 return it->second; 571 return it->second;
573 } 572 }
574 return GetDynamicStream(stream_id); 573 return GetDynamicStream(stream_id);
575 } 574 }
(...skipping 20 matching lines...) Expand all
596 595
597 StreamMap::iterator it = dynamic_stream_map_.find(stream_id); 596 StreamMap::iterator it = dynamic_stream_map_.find(stream_id);
598 if (it != dynamic_stream_map_.end()) { 597 if (it != dynamic_stream_map_.end()) {
599 return it->second; 598 return it->second;
600 } 599 }
601 600
602 if (IsClosedStream(stream_id)) { 601 if (IsClosedStream(stream_id)) {
603 return nullptr; 602 return nullptr;
604 } 603 }
605 604
606 if (stream_id % 2 == next_stream_id_ % 2) { 605 if (stream_id % 2 == next_outgoing_stream_id_ % 2) {
607 // We've received a frame for a locally-created stream that is not 606 // We've received a frame for a locally-created stream that is not
608 // currently active. This is an error. 607 // currently active. This is an error.
609 CloseConnection(QUIC_PACKET_FOR_NONEXISTENT_STREAM); 608 CloseConnection(QUIC_PACKET_FOR_NONEXISTENT_STREAM);
610 return nullptr; 609 return nullptr;
611 } 610 }
612 611
613 return GetIncomingDynamicStream(stream_id); 612 return GetIncomingDynamicStream(stream_id);
614 } 613 }
615 614
616 ReliableQuicStream* QuicSession::GetIncomingDynamicStream( 615 ReliableQuicStream* QuicSession::GetIncomingDynamicStream(
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 return connection_->goaway_received(); 710 return connection_->goaway_received();
712 } 711 }
713 712
714 bool QuicSession::IsClosedStream(QuicStreamId id) { 713 bool QuicSession::IsClosedStream(QuicStreamId id) {
715 DCHECK_NE(0u, id); 714 DCHECK_NE(0u, id);
716 if (ContainsKey(static_stream_map_, id) || 715 if (ContainsKey(static_stream_map_, id) ||
717 ContainsKey(dynamic_stream_map_, id)) { 716 ContainsKey(dynamic_stream_map_, id)) {
718 // Stream is active 717 // Stream is active
719 return false; 718 return false;
720 } 719 }
721 if (id % 2 == next_stream_id_ % 2) { 720 if (id % 2 == next_outgoing_stream_id_ % 2) {
722 // Locally created streams are strictly in-order. If the id is in the 721 // Locally created streams are strictly in-order. If the id is in the
723 // range of created streams and it's not active, it must have been closed. 722 // range of created streams and it's not active, it must have been closed.
724 return id < next_stream_id_; 723 return id < next_outgoing_stream_id_;
725 } 724 }
726 // For peer created streams, we also need to consider available streams. 725 // For peer created streams, we also need to consider available streams.
727 return id <= largest_peer_created_stream_id_ && 726 return id <= largest_peer_created_stream_id_ &&
728 !ContainsKey(available_streams_, id); 727 !ContainsKey(available_streams_, id);
729 } 728 }
730 729
731 size_t QuicSession::GetNumOpenStreams() const { 730 size_t QuicSession::GetNumOpenStreams() const {
732 if (FLAGS_allow_many_available_streams) { 731 if (FLAGS_allow_many_available_streams) {
733 return dynamic_stream_map_.size() - draining_streams_.size(); 732 return dynamic_stream_map_.size() - draining_streams_.size();
734 } else { 733 } else {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 } 792 }
794 for (auto const& kv : dynamic_stream_map_) { 793 for (auto const& kv : dynamic_stream_map_) {
795 if (kv.second->flow_controller()->IsBlocked()) { 794 if (kv.second->flow_controller()->IsBlocked()) {
796 return true; 795 return true;
797 } 796 }
798 } 797 }
799 return false; 798 return false;
800 } 799 }
801 800
802 } // namespace net 801 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_session.h ('k') | net/quic/quic_session_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698