Remove QuicSession::num_active_request() and allow subclasses to account the number of request individually. gfe-relnote: n/a - code refactor. PiperOrigin-RevId: 237508966 Change-Id: Id33ba212a4cfbd73f07264d5f6bcf95908fe772b
diff --git a/quic/core/http/quic_spdy_client_session_base.cc b/quic/core/http/quic_spdy_client_session_base.cc index 5a8fe8d..924ab36 100644 --- a/quic/core/http/quic_spdy_client_session_base.cc +++ b/quic/core/http/quic_spdy_client_session_base.cc
@@ -203,7 +203,7 @@ } bool QuicSpdyClientSessionBase::ShouldReleaseHeadersStreamSequencerBuffer() { - return num_active_requests() == 0 && promised_by_id_.empty(); + return !HasActiveRequestStreams() && promised_by_id_.empty(); } } // namespace quic
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc index 01e630d..ddae51a 100644 --- a/quic/core/http/quic_spdy_session.cc +++ b/quic/core/http/quic_spdy_session.cc
@@ -693,4 +693,9 @@ error, details, ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET); } +bool QuicSpdySession::HasActiveRequestStreams() const { + // TODO(renjietang): Exclude static streams. + return !dynamic_streams().empty(); +} + } // namespace quic
diff --git a/quic/core/http/quic_spdy_session.h b/quic/core/http/quic_spdy_session.h index 00f241e..93067fa 100644 --- a/quic/core/http/quic_spdy_session.h +++ b/quic/core/http/quic_spdy_session.h
@@ -159,6 +159,9 @@ max_inbound_header_list_size_ = max_inbound_header_list_size; } + // Returns true if the session has active request streams. + bool HasActiveRequestStreams() const; + protected: // Override CreateIncomingStream(), CreateOutgoingBidirectionalStream() and // CreateOutgoingUnidirectionalStream() with QuicSpdyStream return type to
diff --git a/quic/core/quic_session.h b/quic/core/quic_session.h index 8976842..6cd766f 100644 --- a/quic/core/quic_session.h +++ b/quic/core/quic_session.h
@@ -275,7 +275,6 @@ QuicConnection* connection() { return connection_; } const QuicConnection* connection() const { return connection_; } - size_t num_active_requests() const { return dynamic_stream_map_.size(); } const QuicSocketAddress& peer_address() const { return connection_->peer_address(); }
diff --git a/quic/tools/quic_client_base.cc b/quic/tools/quic_client_base.cc index 2d8c307..db0503c 100644 --- a/quic/tools/quic_client_base.cc +++ b/quic/tools/quic_client_base.cc
@@ -194,7 +194,7 @@ Connect(); } - return session()->num_active_requests() != 0; + return HasActiveRequests(); } bool QuicClientBase::MigrateSocket(const QuicIpAddress& new_host) {
diff --git a/quic/tools/quic_client_base.h b/quic/tools/quic_client_base.h index 379f097..3b09e18 100644 --- a/quic/tools/quic_client_base.h +++ b/quic/tools/quic_client_base.h
@@ -283,6 +283,9 @@ // You probably want to call this if you override CreateQuicSpdyClientSession. void ResetSession() { session_.reset(); } + // Returns true if the corresponding of this client has active requests. + virtual bool HasActiveRequests() = 0; + private: // Returns true and set |version| if client can reconnect with a different // version.
diff --git a/quic/tools/quic_spdy_client_base.cc b/quic/tools/quic_spdy_client_base.cc index 8225053..b9b0bd2 100644 --- a/quic/tools/quic_spdy_client_base.cc +++ b/quic/tools/quic_spdy_client_base.cc
@@ -266,4 +266,8 @@ return latest_response_trailers_; } +bool QuicSpdyClientBase::HasActiveRequests() { + return client_session()->HasActiveRequestStreams(); +} + } // namespace quic
diff --git a/quic/tools/quic_spdy_client_base.h b/quic/tools/quic_spdy_client_base.h index be91ca1..3112f9c 100644 --- a/quic/tools/quic_spdy_client_base.h +++ b/quic/tools/quic_spdy_client_base.h
@@ -159,6 +159,7 @@ void AddPromiseDataToResend(const spdy::SpdyHeaderBlock& headers, QuicStringPiece body, bool fin); + bool HasActiveRequests() override; private: // Specific QuicClient class for storing data to resend.