Add PriorityWriteScheduler::kLowestPriority and PriorityWriteScheduler::kHighestPriority.
PiperOrigin-RevId: 499923094
diff --git a/quiche/http2/core/priority_write_scheduler.h b/quiche/http2/core/priority_write_scheduler.h
index 1c3820d..ff867a9 100644
--- a/quiche/http2/core/priority_write_scheduler.h
+++ b/quiche/http2/core/priority_write_scheduler.h
@@ -46,6 +46,12 @@
public:
using StreamPrecedenceType = spdy::StreamPrecedence<StreamIdType>;
+ static constexpr int kHighestPriority = 0;
+ static constexpr int kLowestPriority = 7;
+
+ static_assert(spdy::kV3HighestPriority == kHighestPriority);
+ static_assert(spdy::kV3LowestPriority == kLowestPriority);
+
// Registers new stream `stream_id` with the scheduler, assigning it the
// given precedence. If the scheduler supports stream dependencies, the
// stream is inserted into the dependency tree under
@@ -98,7 +104,7 @@
auto it = stream_infos_.find(stream_id);
if (it == stream_infos_.end()) {
QUICHE_DVLOG(1) << "Stream " << stream_id << " not registered";
- return StreamPrecedenceType(spdy::kV3LowestPriority);
+ return StreamPrecedenceType(kLowestPriority);
}
return StreamPrecedenceType(it->second->priority);
}
@@ -169,8 +175,8 @@
}
int64_t last_event_time_usec = 0;
const StreamInfo* const stream_info = it->second.get();
- for (spdy::SpdyPriority p = spdy::kV3HighestPriority;
- p < stream_info->priority; ++p) {
+ for (spdy::SpdyPriority p = kHighestPriority; p < stream_info->priority;
+ ++p) {
last_event_time_usec = std::max(last_event_time_usec,
priority_infos_[p].last_event_time_usec);
}
@@ -193,8 +199,7 @@
// Preconditions: `HasReadyStreams() == true`
std::tuple<StreamIdType, StreamPrecedenceType>
PopNextReadyStreamAndPrecedence() {
- for (spdy::SpdyPriority p = spdy::kV3HighestPriority;
- p <= spdy::kV3LowestPriority; ++p) {
+ for (spdy::SpdyPriority p = kHighestPriority; p <= kLowestPriority; ++p) {
ReadyList& ready_list = priority_infos_[p].ready_list;
if (!ready_list.empty()) {
StreamInfo* const info = ready_list.front();
@@ -209,7 +214,7 @@
}
}
QUICHE_BUG(spdy_bug_19_6) << "No ready streams available";
- return std::make_tuple(0, StreamPrecedenceType(spdy::kV3LowestPriority));
+ return std::make_tuple(0, StreamPrecedenceType(kLowestPriority));
}
// Returns true if there's another stream ahead of the given stream in the
@@ -226,8 +231,8 @@
// If there's a higher priority stream, this stream should yield.
const StreamInfo* const stream_info = it->second.get();
- for (spdy::SpdyPriority p = spdy::kV3HighestPriority;
- p < stream_info->priority; ++p) {
+ for (spdy::SpdyPriority p = kHighestPriority; p < stream_info->priority;
+ ++p) {
if (!priority_infos_[p].ready_list.empty()) {
return true;
}
@@ -359,7 +364,7 @@
// Number of ready streams.
size_t num_ready_streams_ = 0;
// Per-priority state, including ready lists.
- PriorityInfo priority_infos_[spdy::kV3LowestPriority + 1];
+ PriorityInfo priority_infos_[kLowestPriority + 1];
// StreamInfos for all registered streams.
StreamInfoMap stream_infos_;
};
diff --git a/quiche/http2/core/priority_write_scheduler_test.cc b/quiche/http2/core/priority_write_scheduler_test.cc
index e94e522..e8a54dd 100644
--- a/quiche/http2/core/priority_write_scheduler_test.cc
+++ b/quiche/http2/core/priority_write_scheduler_test.cc
@@ -13,7 +13,6 @@
namespace test {
using ::spdy::kHttp2RootStreamId;
-using ::spdy::kV3LowestPriority;
using ::spdy::SpdyPriority;
using ::spdy::SpdyStreamId;
using ::spdy::SpdyStreamPrecedence;
@@ -37,6 +36,9 @@
class PriorityWriteSchedulerTest : public quiche::test::QuicheTest {
public:
+ static constexpr int kLowestPriority =
+ PriorityWriteScheduler<SpdyStreamId>::kLowestPriority;
+
PriorityWriteSchedulerTest() : peer_(&scheduler_) {}
PriorityWriteScheduler<SpdyStreamId> scheduler_;
@@ -105,7 +107,7 @@
TEST_F(PriorityWriteSchedulerTest, GetStreamPrecedence) {
// Unknown streams tolerated due to b/15676312. However, return lowest
// priority.
- EXPECT_EQ(kV3LowestPriority,
+ EXPECT_EQ(kLowestPriority,
scheduler_.GetStreamPrecedence(1).spdy3_priority());
scheduler_.RegisterStream(1, SpdyStreamPrecedence(3));
@@ -135,7 +137,7 @@
EXPECT_EQ(6, scheduler_.GetStreamPrecedence(1).spdy3_priority());
scheduler_.UnregisterStream(1);
- EXPECT_EQ(kV3LowestPriority,
+ EXPECT_EQ(kLowestPriority,
scheduler_.GetStreamPrecedence(1).spdy3_priority());
}
@@ -151,12 +153,12 @@
// For the moment, updating stream precedence on a non-registered stream
// should have no effect. In the future, it will lazily cause the stream to
// be registered (b/15676312).
- EXPECT_EQ(kV3LowestPriority,
+ EXPECT_EQ(kLowestPriority,
scheduler_.GetStreamPrecedence(3).spdy3_priority());
EXPECT_FALSE(scheduler_.StreamRegistered(3));
scheduler_.UpdateStreamPrecedence(3, SpdyStreamPrecedence(1));
EXPECT_FALSE(scheduler_.StreamRegistered(3));
- EXPECT_EQ(kV3LowestPriority,
+ EXPECT_EQ(kLowestPriority,
scheduler_.GetStreamPrecedence(3).spdy3_priority());
scheduler_.RegisterStream(3, SpdyStreamPrecedence(1));