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.