Add a new callback for probing retransmissions.
Whenever the connection needs to send probing retransmissions it calls the
session to decide what data to send.
gfe-relnote: n/a (probing retransmissions only used by Quartc)
PiperOrigin-RevId: 245817562
Change-Id: I2239c32ea4e2f6aa7dd6f733045ccc8fa0da4dc5
diff --git a/quic/test_tools/quic_test_utils.h b/quic/test_tools/quic_test_utils.h
index c9db3e5..08337da 100644
--- a/quic/test_tools/quic_test_utils.h
+++ b/quic/test_tools/quic_test_utils.h
@@ -363,6 +363,7 @@
ConnectionCloseSource source));
MOCK_METHOD0(OnWriteBlocked, void());
MOCK_METHOD0(OnCanWrite, void());
+ MOCK_METHOD0(SendProbingData, bool());
MOCK_METHOD1(OnCongestionWindowChange, void(QuicTime now));
MOCK_METHOD1(OnConnectionMigration, void(AddressChangeType type));
MOCK_METHOD0(OnPathDegrading, void());
diff --git a/quic/test_tools/simulator/quic_endpoint.cc b/quic/test_tools/simulator/quic_endpoint.cc
index 9e5c3fa..61d253f 100644
--- a/quic/test_tools/simulator/quic_endpoint.cc
+++ b/quic/test_tools/simulator/quic_endpoint.cc
@@ -238,6 +238,15 @@
}
WriteStreamData();
}
+
+bool QuicEndpoint::SendProbingData() {
+ if (connection()->sent_packet_manager().MaybeRetransmitOldestPacket(
+ PROBING_RETRANSMISSION)) {
+ return true;
+ }
+ return false;
+}
+
bool QuicEndpoint::WillingAndAbleToWrite() const {
if (notifier_ != nullptr) {
return notifier_->WillingToWrite();
diff --git a/quic/test_tools/simulator/quic_endpoint.h b/quic/test_tools/simulator/quic_endpoint.h
index 7693b7b..8bbdbd7 100644
--- a/quic/test_tools/simulator/quic_endpoint.h
+++ b/quic/test_tools/simulator/quic_endpoint.h
@@ -82,6 +82,7 @@
void OnStreamFrame(const QuicStreamFrame& frame) override;
void OnCryptoFrame(const QuicCryptoFrame& frame) override;
void OnCanWrite() override;
+ bool SendProbingData() override;
bool WillingAndAbleToWrite() const override;
bool HasPendingHandshake() const override;
bool ShouldKeepConnectionAlive() const override;