gfe-relnote: In GFE, export number of QUIC packets written per write operation. Protected by FLAGS_quic_export_server_num_packets_per_write_histogram.

PiperOrigin-RevId: 249251940
Change-Id: Ie92306bb1d10dec11c2801353026b363f3046d81
diff --git a/quic/core/quic_packet_generator.cc b/quic/core/quic_packet_generator.cc
index f490900..6f578f5 100644
--- a/quic/core/quic_packet_generator.cc
+++ b/quic/core/quic_packet_generator.cc
@@ -14,6 +14,7 @@
 #include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
+#include "net/third_party/quiche/src/quic/platform/api/quic_server_stats.h"
 
 namespace quic {
 
@@ -317,6 +318,9 @@
 
 void QuicPacketGenerator::AttachPacketFlusher() {
   flusher_attached_ = true;
+  if (!write_start_packet_number_.IsInitialized()) {
+    write_start_packet_number_ = packet_creator_.NextSendingPacketNumber();
+  }
 }
 
 void QuicPacketGenerator::Flush() {
@@ -324,6 +328,17 @@
   packet_creator_.Flush();
   SendRemainingPendingPadding();
   flusher_attached_ = false;
+  if (GetQuicFlag(FLAGS_quic_export_server_num_packets_per_write_histogram)) {
+    if (!write_start_packet_number_.IsInitialized()) {
+      QUIC_BUG << "write_start_packet_number is not initialized";
+      return;
+    }
+    QUIC_SERVER_HISTOGRAM_COUNTS(
+        "quic_server_num_written_packets_per_write",
+        packet_creator_.NextSendingPacketNumber() - write_start_packet_number_,
+        1, 200, 50, "Number of QUIC packets written per write operation");
+  }
+  write_start_packet_number_.Clear();
 }
 
 void QuicPacketGenerator::FlushAllQueuedFrames() {