Propagate Datagram ACKs from QuartcSession
Introduce maps of message_id to datagram ids, so we could translate message ACKs received from QUIC to datagram ACKs that are propagated up the stack. We have to maintain map, because QUIC assigns message_id only when message is sent (it can be queued if connection was congestion controlled).
WebRTC will use transport sequence numbers as datagram_id so that ACKs can be mapped to sent packets.
gfe-relnote: n/a (Quartc only)
PiperOrigin-RevId: 250589798
Change-Id: Ib7df728873a839bd3343adb182fb68c3bf055caf
diff --git a/quic/quartc/quartc_session_test.cc b/quic/quartc/quartc_session_test.cc
index 87174dc..316a7a7 100644
--- a/quic/quartc/quartc_session_test.cc
+++ b/quic/quartc/quartc_session_test.cc
@@ -180,6 +180,9 @@
EXPECT_THAT(server_session_delegate_->sent_datagram_ids(),
testing::ElementsAre(server_datagram_id));
+ EXPECT_THAT(server_session_delegate_->acked_datagram_ids(),
+ testing::ElementsAre(server_datagram_id));
+
// Send message from peer 2 to peer 1.
message = CreateMemSliceVector("Message from client");
ASSERT_TRUE(
@@ -196,6 +199,9 @@
EXPECT_THAT(client_session_delegate_->sent_datagram_ids(),
testing::ElementsAre(client_datagram_id));
+
+ EXPECT_THAT(client_session_delegate_->acked_datagram_ids(),
+ testing::ElementsAre(client_datagram_id));
}
// Test for sending multiple messages that also result in queueing.
@@ -242,6 +248,7 @@
EXPECT_EQ(delegate_receiving->incoming_messages(), sent_messages);
EXPECT_EQ(delegate_sending->sent_datagram_ids(), sent_datagram_ids);
+ EXPECT_EQ(delegate_sending->acked_datagram_ids(), sent_datagram_ids);
}
// Test sending long messages: