Change PriorityWriteScheduler to use SpdyPriority.

PriorityWriteScheduler only uses the priority value of spdy::StreamPrecedence,
it ignores the parent stream and weight (if any).  For simplicity, this CL
changes RegisterStream() and UpdateStreamPriority() to take SpdyPriority
instead, and GetStreamPriority() to return one.

Also introduce PriorityWriteScheduler::PriorityType.  This is an alias for
spdy::SpdyPriority for now, and will become a template parameter in the next CL.

Also rename UpdateStreamPrecedence() to UpdateStreamPriority() and
GetStreamPrecedence() to GetStreamPriority() to reflect the argument type
change.  Also renames GetLatestEventWithPrecedence() to
GetLatestEventWithPriority(), both on PriorityWriteScheduler and
Http2Dispatcher, to reflect that it is only the priority (integer value) of the
stream that is considered in that method.

Also remove unused GetStreamChildren() method.

PiperOrigin-RevId: 502977611
5 files changed
tree: 80f90db28347e77b797c392d5ecc0036ee147c07
  1. build/
  2. depstool/
  3. quiche/
  4. .bazelrc
  5. BUILD.bazel
  6. CONTRIBUTING.md
  7. LICENSE
  8. README.md
  9. WHITESPACE
  10. WORKSPACE.bazel
README.md

QUICHE

QUICHE stands for QUIC, Http, Etc. It is Google‘s production-ready implementation of QUIC, HTTP/2, HTTP/3, and related protocols and tools. It powers Google’s servers, Chromium, Envoy, and other projects. It is actively developed and maintained.

There are two public QUICHE repositories. Either one may be used by embedders, as they are automatically kept in sync:

To embed QUICHE in your project, platform APIs need to be implemented and build files need to be created. Note that it is on the QUICHE team's roadmap to include default implementation for all platform APIs and to open-source build files. In the meanwhile, take a look at open source embedders like Chromium and Envoy to get started:

To contribute to QUICHE, follow instructions at CONTRIBUTING.md.

QUICHE is only supported on little-endian platforms.