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