Make QpackEncoder interface not progressive.

When the QPACK implementation was originally written, an
HpackEncoder::ProgressiveEncoder interface was used for encoding.  However, the
way it is used in QuicSpdyStream, it is clear now that encoding can be done in a
single pass into a std::string object.  QuicStream::WriteOrBufferData() does not
lend itself easily to notifying the QPACK encoder that it is ready to take more
data.  Instead it is more natural to encode the entire header block and buffer
that in QuicStreamSendBuffer.  Also note that this should not cost more memory
than doing progressive encoding, because the SpdyHeaderBlock object would need
to be kept around if progressive encoding was used.

This CL introduces no functional change, it just changes the interface, and
moves the code that calls Next() from QuicSpdyStream into QpackEncoder.  A
follow-up CL will clean up QpackEncoder internals.

gfe-relnote: n/a, QUIC v99-only change.
PiperOrigin-RevId: 254323435
Change-Id: Ic3d203ed9f019ad01dba61d407a6e73bde5d12d1
10 files changed
tree: d0df12aba9ac2e3ba6fd2ed00d9964688942c55f
  1. common/
  2. epoll_server/
  3. http2/
  4. quic/
  5. spdy/
  6. CONTRIBUTING.md
  7. LICENSE
  8. README.md
README.md

QUICHE

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.

The code is currently in process of being moved from https://cs.chromium.org/chromium/src/net/third_party/ into this repository. Please excuse our appearance while we're under construction.