commit | 7dcfe320c5cc7e7792018f70f66cc2824e18dab7 | [log] [tgz] |
---|---|---|
author | bnc <bnc@google.com> | Thu Mar 18 09:49:08 2021 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Thu Mar 18 09:49:43 2021 -0700 |
tree | 027706e537f3dbda8732b650a9a3026893080d30 | |
parent | be191287c8c302e35826f4854a0b362fea632551 [diff] |
Refactor HPACK/QPACK lookup entry. Before this CL, an HpackEntry could serve as a storage entry: to store strings in a deque, for easy FIFO insertion and deletion; or as a reference entry used for lookup: to point to strings stored in storage entries by means of string_views, used in a set to allow convenient lookup by name and value without having to store duplicate copies of strings. This CL creates a dedicated HpackLookupEntry struct, so that the EntryType and the string_view parts of HpackEntry can be removed in a future CL, substantially reducing HpackEntry size and complexity. Note that previously separate EntryHasher and EntriesEq functors were used, mostly because until recently STL containers were used in Chromium and Absail ones internally, and the hasher had to be defined as a template parameter to work with both, and partially because conceptually two HpackEntries with same string values were not equal, so operator==() would have been a lie. Now both obstacles have been removed, allowing HpackLookupEntry to define operator==() and an Absail-style hasher, eliminating the need for extra container template parameters. Also remove unused HpackHeaderTable::DebugLogTableState(). PiperOrigin-RevId: 363679331 Change-Id: Iad2f198c57e8e60c2b6e0e679b391d50d1dbcf7a
QUICHE (QUIC, Http/2, Etc) is Google‘s implementation of QUIC and related protocols. It powers Chromium as well as Google’s QUIC servers and some other projects. QUICHE is only supported on little-endian platforms.
Code can be viewed in CodeSearch in Quiche and is imported into Chromium.