Add OnDatagramAcked interface

Bug: webrtc:9719
Change-Id: Ib394e02a4f0dcb36da64b9f005f068a53a50854c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/139280
Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Bjorn Mellem <mellem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28111}
diff --git a/api/datagram_transport_interface.h b/api/datagram_transport_interface.h
index 271b951c8..84acdfc 100644
--- a/api/datagram_transport_interface.h
+++ b/api/datagram_transport_interface.h
@@ -31,6 +31,13 @@
 
 typedef int64_t DatagramId;
 
+// TODO(mellem): Add receive timestamp.
+struct DatagramAck {
+  // |datagram_id| is same as passed in
+  // DatagramTransportInterface::SendDatagram.
+  DatagramId datagram_id;
+};
+
 // All sink methods are called on network thread.
 class DatagramSinkInterface {
  public:
@@ -41,8 +48,12 @@
 
   // Called when datagram is actually sent (datragram can be delayed due
   // to congestion control or fusing). |datagram_id| is same as passed in
-  // QuicTransportInterface::SendDatagram.
+  // DatagramTransportInterface::SendDatagram.
   virtual void OnDatagramSent(DatagramId datagram_id) = 0;
+
+  // Called when datagram is ACKed.
+  // TODO(sukhanov): Make pure virtual.
+  virtual void OnDatagramAcked(const DatagramAck& datagram_ack) {}
 };
 
 // Datagram transport allows to send and receive unreliable packets (datagrams)