No public description PiperOrigin-RevId: 742788780
diff --git a/quiche/quic/core/quic_packet_writer_wrapper.cc b/quiche/quic/core/quic_packet_writer_wrapper.cc index 6a61556..c22fea6 100644 --- a/quiche/quic/core/quic_packet_writer_wrapper.cc +++ b/quiche/quic/core/quic_packet_writer_wrapper.cc
@@ -18,8 +18,12 @@ const char* buffer, size_t buf_len, const QuicIpAddress& self_address, const QuicSocketAddress& peer_address, PerPacketOptions* options, const QuicPacketWriterParams& params) { - return writer_->WritePacket(buffer, buf_len, self_address, peer_address, - options, params); + const WriteResult result = writer_->WritePacket( + buffer, buf_len, self_address, peer_address, options, params); + if (on_write_done_ != nullptr) { + on_write_done_(buf_len, result); + } + return result; } bool QuicPacketWriterWrapper::IsWriteBlocked() const {
diff --git a/quiche/quic/core/quic_packet_writer_wrapper.h b/quiche/quic/core/quic_packet_writer_wrapper.h index 898a0e0..248aed5 100644 --- a/quiche/quic/core/quic_packet_writer_wrapper.h +++ b/quiche/quic/core/quic_packet_writer_wrapper.h
@@ -7,8 +7,10 @@ #include <cstddef> #include <memory> +#include <utility> #include "quiche/quic/core/quic_packet_writer.h" +#include "quiche/common/quiche_callbacks.h" namespace quic { @@ -52,11 +54,23 @@ QuicPacketWriter* writer() { return writer_; } + // First argument is the packet size. Second argument is the result of the + // write. + using OnWriteDoneCallback = + quiche::MultiUseCallback<void(size_t, const WriteResult&)>; + + // If set, |on_write_done| will be called after each write. + void set_on_write_done(OnWriteDoneCallback on_write_done) { + on_write_done_ = std::move(on_write_done); + } + private: void unset_writer(); QuicPacketWriter* writer_ = nullptr; bool owns_writer_ = false; + // If not null, called after each write. + OnWriteDoneCallback on_write_done_; }; } // namespace quic