Introduce QuicDatagramQueue::Observer
Introduce an observer which is notified when a datagram in the
associated queue is sent to the network or expires, in order to give
the backpressure information to the user of the queue.
Bug: https://crbug.com/114921
Protected by FLAGS_gfe2_reloadable_flag_report_frontline_vip.
PiperOrigin-RevId: 343224979
Change-Id: I9ed2b22118b2aedeb0ec2ef194b92af777af3d15
diff --git a/quic/quic_transport/quic_transport_client_session.cc b/quic/quic_transport/quic_transport_client_session.cc
index f38d6b3..66f993a 100644
--- a/quic/quic_transport/quic_transport_client_session.cc
+++ b/quic/quic_transport/quic_transport_client_session.cc
@@ -34,12 +34,14 @@
const GURL& url,
QuicCryptoClientConfig* crypto_config,
url::Origin origin,
- ClientVisitor* visitor)
+ ClientVisitor* visitor,
+ std::unique_ptr<QuicDatagramQueue::Observer> datagram_observer)
: QuicSession(connection,
owner,
config,
supported_versions,
- /*num_expected_unidirectional_static_streams*/ 0),
+ /*num_expected_unidirectional_static_streams*/ 0,
+ std::move(datagram_observer)),
url_(url),
origin_(origin),
visitor_(visitor) {
diff --git a/quic/quic_transport/quic_transport_client_session.h b/quic/quic_transport/quic_transport_client_session.h
index c4f417f..b7687c0 100644
--- a/quic/quic_transport/quic_transport_client_session.h
+++ b/quic/quic_transport/quic_transport_client_session.h
@@ -16,6 +16,7 @@
#include "net/third_party/quiche/src/quic/core/quic_connection.h"
#include "net/third_party/quiche/src/quic/core/quic_crypto_client_stream.h"
#include "net/third_party/quiche/src/quic/core/quic_crypto_stream.h"
+#include "net/third_party/quiche/src/quic/core/quic_datagram_queue.h"
#include "net/third_party/quiche/src/quic/core/quic_server_id.h"
#include "net/third_party/quiche/src/quic/core/quic_session.h"
#include "net/third_party/quiche/src/quic/core/quic_stream.h"
@@ -56,14 +57,16 @@
virtual void OnCanCreateNewOutgoingUnidirectionalStream() = 0;
};
- QuicTransportClientSession(QuicConnection* connection,
- Visitor* owner,
- const QuicConfig& config,
- const ParsedQuicVersionVector& supported_versions,
- const GURL& url,
- QuicCryptoClientConfig* crypto_config,
- url::Origin origin,
- ClientVisitor* visitor);
+ QuicTransportClientSession(
+ QuicConnection* connection,
+ Visitor* owner,
+ const QuicConfig& config,
+ const ParsedQuicVersionVector& supported_versions,
+ const GURL& url,
+ QuicCryptoClientConfig* crypto_config,
+ url::Origin origin,
+ ClientVisitor* visitor,
+ std::unique_ptr<QuicDatagramQueue::Observer> datagram_observer);
std::vector<std::string> GetAlpnsToOffer() const override {
return std::vector<std::string>({QuicTransportAlpn()});
diff --git a/quic/quic_transport/quic_transport_client_session_test.cc b/quic/quic_transport/quic_transport_client_session_test.cc
index 129c87e..b311b52 100644
--- a/quic/quic_transport/quic_transport_client_session_test.cc
+++ b/quic/quic_transport/quic_transport_client_session_test.cc
@@ -65,7 +65,7 @@
session_ = std::make_unique<QuicTransportClientSession>(
&connection_, nullptr, DefaultQuicConfig(), GetVersions(),
GURL("quic-transport://test.example.com:50000" + url_suffix),
- &crypto_config_, origin, &visitor_);
+ &crypto_config_, origin, &visitor_, /*datagram_observer=*/nullptr);
session_->Initialize();
crypto_stream_ = static_cast<QuicCryptoClientStream*>(
session_->GetMutableCryptoStream());
diff --git a/quic/quic_transport/quic_transport_integration_test.cc b/quic/quic_transport/quic_transport_integration_test.cc
index 1965c6d..99c20b2 100644
--- a/quic/quic_transport/quic_transport_integration_test.cc
+++ b/quic/quic_transport/quic_transport_integration_test.cc
@@ -90,7 +90,8 @@
GURL("quic-transport://test.example.com:50000" + path),
&crypto_config_,
origin,
- &visitor_) {
+ &visitor_,
+ /*datagram_observer=*/nullptr) {
session_.Initialize();
}