Convert bytes_left_for_batch_write_ to unsigned integer array.
PiperOrigin-RevId: 328940902
Change-Id: Ia765159ae756b62bef796511dc39987e8dfe00ec
diff --git a/quic/core/quic_write_blocked_list.cc b/quic/core/quic_write_blocked_list.cc
index 3c1edc4..b3602a6 100644
--- a/quic/core/quic_write_blocked_list.cc
+++ b/quic/core/quic_write_blocked_list.cc
@@ -149,8 +149,17 @@
if (batch_write_stream_id_[last_priority_popped_] == stream_id) {
// If this was the last data stream popped by PopFront, update the
// bytes remaining in its batch write.
- bytes_left_for_batch_write_[last_priority_popped_] -=
- static_cast<int32_t>(bytes);
+ if (fix_bytes_left_for_batch_write_) {
+ QUIC_RELOADABLE_FLAG_COUNT(quic_fix_bytes_left_for_batch_write);
+ // TODO(fayang): change this static_cast to static_cast<uint32_t> when
+ // deprecating quic_fix_bytes_left_for_batch_write.
+ bytes_left_for_batch_write_[last_priority_popped_] -=
+ std::min(bytes_left_for_batch_write_[last_priority_popped_],
+ static_cast<int32_t>(bytes));
+ } else {
+ bytes_left_for_batch_write_[last_priority_popped_] -=
+ static_cast<int32_t>(bytes);
+ }
}
}
diff --git a/quic/core/quic_write_blocked_list.h b/quic/core/quic_write_blocked_list.h
index fd875bc..08f70b3 100644
--- a/quic/core/quic_write_blocked_list.h
+++ b/quic/core/quic_write_blocked_list.h
@@ -13,6 +13,7 @@
#include "net/third_party/quiche/src/quic/platform/api/quic_bug_tracker.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_containers.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_export.h"
+#include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_map_util.h"
#include "net/third_party/quiche/src/spdy/core/fifo_write_scheduler.h"
#include "net/third_party/quiche/src/spdy/core/http2_priority_write_scheduler.h"
@@ -103,6 +104,8 @@
// Set to kBatchWriteSize when we set a new batch_write_stream_id_ for a given
// priority. This is decremented with each write the stream does until it is
// done with its batch write.
+ // TODO(fayang): switch this to uint32_t when deprecating
+ // quic_fix_bytes_left_for_batch_write.
int32_t bytes_left_for_batch_write_[spdy::kV3LowestPriority + 1];
// Tracks the last priority popped for UpdateBytesForStream.
spdy::SpdyPriority last_priority_popped_;
@@ -153,6 +156,9 @@
StaticStreamCollection static_stream_collection_;
spdy::WriteSchedulerType scheduler_type_;
+
+ const bool fix_bytes_left_for_batch_write_ =
+ GetQuicReloadableFlag(quic_fix_bytes_left_for_batch_write);
};
} // namespace quic