Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Unified Diff: net/spdy/spdy_framer.cc

Issue 247283003: HPACK: Implement delta encoding. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/spdy/hpack_round_trip_test.cc ('k') | net/spdy/spdy_framer_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/spdy/spdy_framer.cc
diff --git a/net/spdy/spdy_framer.cc b/net/spdy/spdy_framer.cc
index c0f214cb15d0db883431c22d3e4fc6bc88e25d02..f0efd0447bd5b538d668064d0e9f5bf9d9c46ba4 100644
--- a/net/spdy/spdy_framer.cc
+++ b/net/spdy/spdy_framer.cc
@@ -124,6 +124,7 @@ bool SpdyFramerVisitorInterface::OnRstStreamFrameData(
SpdyFramer::SpdyFramer(SpdyMajorVersion version)
: current_frame_buffer_(new char[kControlFrameBufferSize]),
enable_compression_(true),
+ hpack_encoder_(ObtainHpackHuffmanTable()),
hpack_decoder_(ObtainHpackHuffmanTable()),
visitor_(NULL),
debug_visitor_(NULL),
@@ -2163,8 +2164,13 @@ SpdySerializedFrame* SpdyFramer::SerializeSynStream(
string hpack_encoding;
if (protocol_version() > SPDY3) {
- hpack_encoder_.EncodeHeaderSet(syn_stream.name_value_block(),
- &hpack_encoding);
+ if (enable_compression_) {
+ hpack_encoder_.EncodeHeaderSet(
+ syn_stream.name_value_block(), &hpack_encoding);
+ } else {
+ hpack_encoder_.EncodeHeaderSetWithoutCompression(
+ syn_stream.name_value_block(), &hpack_encoding);
+ }
size += hpack_encoding.size();
} else {
size += GetSerializedLength(syn_stream.name_value_block());
@@ -2223,8 +2229,13 @@ SpdySerializedFrame* SpdyFramer::SerializeSynReply(
string hpack_encoding;
if (protocol_version() > SPDY3) {
- hpack_encoder_.EncodeHeaderSet(syn_reply.name_value_block(),
- &hpack_encoding);
+ if (enable_compression_) {
+ hpack_encoder_.EncodeHeaderSet(
+ syn_reply.name_value_block(), &hpack_encoding);
+ } else {
+ hpack_encoder_.EncodeHeaderSetWithoutCompression(
+ syn_reply.name_value_block(), &hpack_encoding);
+ }
size += hpack_encoding.size();
} else {
size += GetSerializedLength(syn_reply.name_value_block());
@@ -2442,7 +2453,13 @@ SpdySerializedFrame* SpdyFramer::SerializeHeaders(
string hpack_encoding;
if (protocol_version() > SPDY3) {
- hpack_encoder_.EncodeHeaderSet(headers.name_value_block(), &hpack_encoding);
+ if (enable_compression_) {
+ hpack_encoder_.EncodeHeaderSet(
+ headers.name_value_block(), &hpack_encoding);
+ } else {
+ hpack_encoder_.EncodeHeaderSetWithoutCompression(
+ headers.name_value_block(), &hpack_encoding);
+ }
size += hpack_encoding.size();
if (size > GetControlFrameBufferMaxSize()) {
size += GetNumberRequiredContinuationFrames(size) *
@@ -2533,8 +2550,13 @@ SpdyFrame* SpdyFramer::SerializePushPromise(
string hpack_encoding;
if (protocol_version() > SPDY3) {
- hpack_encoder_.EncodeHeaderSet(push_promise.name_value_block(),
- &hpack_encoding);
+ if (enable_compression_) {
+ hpack_encoder_.EncodeHeaderSet(
+ push_promise.name_value_block(), &hpack_encoding);
+ } else {
+ hpack_encoder_.EncodeHeaderSetWithoutCompression(
+ push_promise.name_value_block(), &hpack_encoding);
+ }
size += hpack_encoding.size();
if (size > GetControlFrameBufferMaxSize()) {
size += GetNumberRequiredContinuationFrames(size) *
@@ -2588,8 +2610,13 @@ SpdyFrame* SpdyFramer::SerializeContinuation(
// The size of this frame, including variable-length name-value block.
size_t size = GetContinuationMinimumSize();
string hpack_encoding;
- hpack_encoder_.EncodeHeaderSet(continuation.name_value_block(),
- &hpack_encoding);
+ if (enable_compression_) {
+ hpack_encoder_.EncodeHeaderSet(
+ continuation.name_value_block(), &hpack_encoding);
+ } else {
+ hpack_encoder_.EncodeHeaderSetWithoutCompression(
+ continuation.name_value_block(), &hpack_encoding);
+ }
size += hpack_encoding.size();
SpdyFrameBuilder builder(size, protocol_version());
« no previous file with comments | « net/spdy/hpack_round_trip_test.cc ('k') | net/spdy/spdy_framer_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698