Use QuicStreamPriority in QuicWriteBlockedList. Still no functional change. https://github.com/google/quiche/issues/25 PiperOrigin-RevId: 495948461
diff --git a/quiche/quic/core/quic_session.cc b/quiche/quic/core/quic_session.cc index 3355080..ae7c41a 100644 --- a/quiche/quic/core/quic_session.cc +++ b/quiche/quic/core/quic_session.cc
@@ -17,6 +17,7 @@ #include "quiche/quic/core/quic_connection_context.h" #include "quiche/quic/core/quic_error_codes.h" #include "quiche/quic/core/quic_flow_controller.h" +#include "quiche/quic/core/quic_stream_priority.h" #include "quiche/quic/core/quic_types.h" #include "quiche/quic/core/quic_utils.h" #include "quiche/quic/core/quic_versions.h" @@ -1802,8 +1803,7 @@ void QuicSession::RegisterStreamPriority(QuicStreamId id, bool is_static, const QuicStreamPriority& priority) { - write_blocked_streams()->RegisterStream( - id, is_static, spdy::SpdyStreamPrecedence(priority.urgency)); + write_blocked_streams()->RegisterStream(id, is_static, priority); } void QuicSession::UnregisterStreamPriority(QuicStreamId id, bool is_static) { @@ -1812,8 +1812,7 @@ void QuicSession::UpdateStreamPriority(QuicStreamId id, const QuicStreamPriority& new_priority) { - write_blocked_streams()->UpdateStreamPriority( - id, spdy::SpdyStreamPrecedence(new_priority.urgency)); + write_blocked_streams()->UpdateStreamPriority(id, new_priority); } void QuicSession::ActivateStream(std::unique_ptr<QuicStream> stream) {
diff --git a/quiche/quic/core/quic_write_blocked_list.cc b/quiche/quic/core/quic_write_blocked_list.cc index ad619b1..d54ccca 100644 --- a/quiche/quic/core/quic_write_blocked_list.cc +++ b/quiche/quic/core/quic_write_blocked_list.cc
@@ -62,18 +62,18 @@ return id; } -void QuicWriteBlockedList::RegisterStream( - QuicStreamId stream_id, bool is_static_stream, - const spdy::SpdyStreamPrecedence& precedence) { +void QuicWriteBlockedList::RegisterStream(QuicStreamId stream_id, + bool is_static_stream, + const QuicStreamPriority& priority) { QUICHE_DCHECK(!priority_write_scheduler_.StreamRegistered(stream_id)) << "stream " << stream_id << " already registered"; - QUICHE_DCHECK(precedence.is_spdy3_priority()); if (is_static_stream) { static_stream_collection_.Register(stream_id); return; } - priority_write_scheduler_.RegisterStream(stream_id, precedence); + priority_write_scheduler_.RegisterStream( + stream_id, spdy::SpdyStreamPrecedence(priority.urgency)); } void QuicWriteBlockedList::UnregisterStream(QuicStreamId stream_id, @@ -86,10 +86,10 @@ } void QuicWriteBlockedList::UpdateStreamPriority( - QuicStreamId stream_id, const spdy::SpdyStreamPrecedence& new_precedence) { + QuicStreamId stream_id, const QuicStreamPriority& new_priority) { QUICHE_DCHECK(!static_stream_collection_.IsRegistered(stream_id)); - QUICHE_DCHECK(new_precedence.is_spdy3_priority()); - priority_write_scheduler_.UpdateStreamPrecedence(stream_id, new_precedence); + priority_write_scheduler_.UpdateStreamPrecedence( + stream_id, spdy::SpdyStreamPrecedence(new_priority.urgency)); } void QuicWriteBlockedList::UpdateBytesForStream(QuicStreamId stream_id,
diff --git a/quiche/quic/core/quic_write_blocked_list.h b/quiche/quic/core/quic_write_blocked_list.h index 3020c22..30eb337 100644 --- a/quiche/quic/core/quic_write_blocked_list.h +++ b/quiche/quic/core/quic_write_blocked_list.h
@@ -12,9 +12,11 @@ #include "absl/container/inlined_vector.h" #include "quiche/http2/core/priority_write_scheduler.h" #include "quiche/quic/core/quic_packets.h" +#include "quiche/quic/core/quic_stream_priority.h" #include "quiche/quic/platform/api/quic_bug_tracker.h" #include "quiche/quic/platform/api/quic_export.h" #include "quiche/quic/platform/api/quic_flags.h" +#include "quiche/spdy/core/spdy_protocol.h" namespace quic { @@ -57,12 +59,12 @@ QuicStreamId PopFront(); void RegisterStream(QuicStreamId stream_id, bool is_static_stream, - const spdy::SpdyStreamPrecedence& precedence); + const QuicStreamPriority& priority); void UnregisterStream(QuicStreamId stream_id, bool is_static); void UpdateStreamPriority(QuicStreamId stream_id, - const spdy::SpdyStreamPrecedence& new_precedence); + const QuicStreamPriority& new_priority); void UpdateBytesForStream(QuicStreamId stream_id, size_t bytes);
diff --git a/quiche/quic/core/quic_write_blocked_list_test.cc b/quiche/quic/core/quic_write_blocked_list_test.cc index 784a333..ba02a08 100644 --- a/quiche/quic/core/quic_write_blocked_list_test.cc +++ b/quiche/quic/core/quic_write_blocked_list_test.cc
@@ -15,6 +15,10 @@ namespace test { namespace { +// Default value for `incremental`, see RFC9218. +// TODO(b/147306124): Add support and tests for `incremental` being true. +constexpr bool kNotIncremental = false; + class QuicWriteBlockedListTest : public QuicTestWithParam<bool> { public: QuicWriteBlockedListTest() @@ -37,15 +41,15 @@ // Mark streams blocked in roughly reverse priority order, and // verify that streams are sorted. write_blocked_list_.RegisterStream( - 40, false, spdy::SpdyStreamPrecedence(kV3LowestPriority)); + 40, false, QuicStreamPriority{kV3LowestPriority, kNotIncremental}); write_blocked_list_.RegisterStream( - 23, false, spdy::SpdyStreamPrecedence(kV3HighestPriority)); + 23, false, QuicStreamPriority{kV3HighestPriority, kNotIncremental}); write_blocked_list_.RegisterStream( - 17, false, spdy::SpdyStreamPrecedence(kV3HighestPriority)); + 17, false, QuicStreamPriority{kV3HighestPriority, kNotIncremental}); write_blocked_list_.RegisterStream( - 1, true, spdy::SpdyStreamPrecedence(kV3HighestPriority)); + 1, true, QuicStreamPriority{kV3HighestPriority, kNotIncremental}); write_blocked_list_.RegisterStream( - 3, true, spdy::SpdyStreamPrecedence(kV3HighestPriority)); + 3, true, QuicStreamPriority{kV3HighestPriority, kNotIncremental}); write_blocked_list_.AddStream(40); EXPECT_TRUE(write_blocked_list_.IsStreamBlocked(40)); @@ -86,7 +90,7 @@ TEST_F(QuicWriteBlockedListTest, CryptoStream) { write_blocked_list_.RegisterStream( - 1, true, spdy::SpdyStreamPrecedence(kV3HighestPriority)); + 1, true, QuicStreamPriority{kV3HighestPriority, kNotIncremental}); write_blocked_list_.AddStream(1); EXPECT_EQ(1u, write_blocked_list_.NumBlockedStreams()); @@ -98,7 +102,7 @@ TEST_F(QuicWriteBlockedListTest, HeadersStream) { write_blocked_list_.RegisterStream( - 3, true, spdy::SpdyStreamPrecedence(kV3HighestPriority)); + 3, true, QuicStreamPriority{kV3HighestPriority, kNotIncremental}); write_blocked_list_.AddStream(3); EXPECT_EQ(1u, write_blocked_list_.NumBlockedStreams()); @@ -110,9 +114,9 @@ TEST_F(QuicWriteBlockedListTest, VerifyHeadersStream) { write_blocked_list_.RegisterStream( - 5, false, spdy::SpdyStreamPrecedence(kV3HighestPriority)); + 5, false, QuicStreamPriority{kV3HighestPriority, kNotIncremental}); write_blocked_list_.RegisterStream( - 3, true, spdy::SpdyStreamPrecedence(kV3HighestPriority)); + 3, true, QuicStreamPriority{kV3HighestPriority, kNotIncremental}); write_blocked_list_.AddStream(5); write_blocked_list_.AddStream(3); @@ -134,7 +138,8 @@ // priority. const QuicStreamId kBlockedId = 3 + 2; write_blocked_list_.RegisterStream( - kBlockedId, false, spdy::SpdyStreamPrecedence(kV3HighestPriority)); + kBlockedId, false, + QuicStreamPriority{kV3HighestPriority, kNotIncremental}); write_blocked_list_.AddStream(kBlockedId); write_blocked_list_.AddStream(kBlockedId); write_blocked_list_.AddStream(kBlockedId); @@ -154,11 +159,11 @@ const QuicStreamId id2 = id1 + 2; const QuicStreamId id3 = id2 + 2; write_blocked_list_.RegisterStream( - id1, false, spdy::SpdyStreamPrecedence(kV3LowestPriority)); + id1, false, QuicStreamPriority{kV3LowestPriority, kNotIncremental}); write_blocked_list_.RegisterStream( - id2, false, spdy::SpdyStreamPrecedence(kV3LowestPriority)); + id2, false, QuicStreamPriority{kV3LowestPriority, kNotIncremental}); write_blocked_list_.RegisterStream( - id3, false, spdy::SpdyStreamPrecedence(kV3HighestPriority)); + id3, false, QuicStreamPriority{kV3HighestPriority, kNotIncremental}); write_blocked_list_.AddStream(id1); write_blocked_list_.AddStream(id2); @@ -217,16 +222,19 @@ 7 */ write_blocked_list_.RegisterStream( - 15, false, spdy::SpdyStreamPrecedence(kV3HighestPriority)); + 15, false, QuicStreamPriority{kV3HighestPriority, kNotIncremental}); write_blocked_list_.RegisterStream( - 16, false, spdy::SpdyStreamPrecedence(kV3HighestPriority)); - write_blocked_list_.RegisterStream(5, false, spdy::SpdyStreamPrecedence(5)); - write_blocked_list_.RegisterStream(4, false, spdy::SpdyStreamPrecedence(5)); - write_blocked_list_.RegisterStream(7, false, spdy::SpdyStreamPrecedence(7)); + 16, false, QuicStreamPriority{kV3HighestPriority, kNotIncremental}); + write_blocked_list_.RegisterStream(5, false, + QuicStreamPriority{5, kNotIncremental}); + write_blocked_list_.RegisterStream(4, false, + QuicStreamPriority{5, kNotIncremental}); + write_blocked_list_.RegisterStream(7, false, + QuicStreamPriority{7, kNotIncremental}); write_blocked_list_.RegisterStream( - 1, true, spdy::SpdyStreamPrecedence(kV3HighestPriority)); + 1, true, QuicStreamPriority{kV3HighestPriority, kNotIncremental}); write_blocked_list_.RegisterStream( - 3, true, spdy::SpdyStreamPrecedence(kV3HighestPriority)); + 3, true, QuicStreamPriority{kV3HighestPriority, kNotIncremental}); // When nothing is on the list, nothing yields. EXPECT_FALSE(write_blocked_list_.ShouldYield(5));
diff --git a/quiche/quic/qbone/qbone_stream_test.cc b/quiche/quic/qbone/qbone_stream_test.cc index d7e0c81..ea5fafb 100644 --- a/quiche/quic/qbone/qbone_stream_test.cc +++ b/quiche/quic/qbone/qbone_stream_test.cc
@@ -9,6 +9,7 @@ #include "absl/strings/string_view.h" #include "quiche/quic/core/crypto/quic_random.h" #include "quiche/quic/core/quic_session.h" +#include "quiche/quic/core/quic_stream_priority.h" #include "quiche/quic/core/quic_utils.h" #include "quiche/quic/platform/api/quic_test.h" #include "quiche/quic/platform/api/quic_test_loopback.h" @@ -18,7 +19,6 @@ #include "quiche/quic/test_tools/mock_connection_id_generator.h" #include "quiche/quic/test_tools/quic_test_utils.h" #include "quiche/common/simple_buffer_allocator.h" -#include "quiche/spdy/core/spdy_protocol.h" namespace quic { @@ -70,8 +70,8 @@ // priority. write_blocked_streams()->RegisterStream( stream_id, - /*is_static_stream=*/false, - /* precedence= */ spdy::SpdyStreamPrecedence(3)); + /* is_static_stream = */ false, + QuicStreamPriority{3, QuicStreamPriority::kDefaultIncremental}); } // The session take ownership of the stream.