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));