blob: c20b9915ad30563cc10954d551b449b970ba7280 [file] [log] [blame] [view]
# HTTP/2
This directory contains C++ code implementing
[the HTTP/2 protocol](https://www.rfc-editor.org/rfc/rfc9113.html).
Much of this code was written originally as a collaboration between the
[Chromium networking](https://www.chromium.org/developers/design-documents/network-stack/)
and
[Google Front End](https://cloud.google.com/docs/security/infrastructure/design#google-frontend-service)
teams while developing the experimental SPDY protocol. SPDY was later
standardized as HTTP/2.
## `http2/adapter/`
This subdirectory contains general purpose HTTP/2 protocol handling libraries.
The `oghttp2_adapter` library can be used in combination with an event loop, a
TLS library, and a socket library to make a complete HTTP/2 client or server.
## `http2/core/`
This subdirectory contains core utilities, including constants, data structures,
and some common entry points that can be used to parse and serialize HTTP/2
protocol elements.
## `http2/decoder`
This subdirectory contains a decoder for the HTTP/2 wire format, written from
scratch by James Synge. This decoder is used by Chromium-based browsers, the
Google Front End reverse-proxy, and Envoy-based proxies.
## `http2/hpack`
This subdirectory contains a decoder and encoder for the
[HPACK](https://datatracker.ietf.org/doc/html/rfc7541) compression algorithm
## `http2/test_tools`
This subdirectory contains test utilities that facilitate writing unit tests for
code in the other subdirectories.
## Contributors
Some people who have contributed to this codebase include:
* Alyssa Wilk
* Antonio Vicente
* Bence Beky
* Biren Roy
* Dan Zhang
* Daniel Hollingshead
* Dianna Hu
* Hasan Khalil
* James Synge
* John Graettinger
* Michaela LaVan
* Mike Belshe
* Mike Warres
* Robbie Shade
* Roberto Peon
* Ryan Hamilton
* Victor Vasiliev
* Yang Song