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.