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

Side by Side Diff: net/spdy/spdy_framer.cc

Issue 2570513003: This change removes HpackEncoder::EncodeHeaderSetWithoutCompression() and the corresponding progres… (Closed)
Patch Set: Created 4 years 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 unified diff | Download patch
« no previous file with comments | « net/spdy/hpack/hpack_encoder_test.cc ('k') | net/spdy/spdy_framer_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/spdy/spdy_framer.h" 5 #include "net/spdy/spdy_framer.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <cctype> 10 #include <cctype>
(...skipping 1765 matching lines...) Expand 10 before | Expand all | Expand 10 after
1776 } 1776 }
1777 1777
1778 SpdyFramer::SpdyHeaderFrameIterator::SpdyHeaderFrameIterator( 1778 SpdyFramer::SpdyHeaderFrameIterator::SpdyHeaderFrameIterator(
1779 SpdyFramer* framer, 1779 SpdyFramer* framer,
1780 std::unique_ptr<SpdyHeadersIR> headers_ir) 1780 std::unique_ptr<SpdyHeadersIR> headers_ir)
1781 : headers_ir_(std::move(headers_ir)), 1781 : headers_ir_(std::move(headers_ir)),
1782 framer_(framer), 1782 framer_(framer),
1783 debug_total_size_(0), 1783 debug_total_size_(0),
1784 is_first_frame_(true), 1784 is_first_frame_(true),
1785 has_next_frame_(true) { 1785 has_next_frame_(true) {
1786 encoder_ = framer_->GetHpackEncoder()->EncodeHeaderSet( 1786 encoder_ =
1787 headers_ir_->header_block(), framer_->compression_enabled()); 1787 framer_->GetHpackEncoder()->EncodeHeaderSet(headers_ir_->header_block());
1788 } 1788 }
1789 1789
1790 SpdyFramer::SpdyHeaderFrameIterator::~SpdyHeaderFrameIterator() {} 1790 SpdyFramer::SpdyHeaderFrameIterator::~SpdyHeaderFrameIterator() {}
1791 1791
1792 SpdySerializedFrame SpdyFramer::SpdyHeaderFrameIterator::NextFrame() { 1792 SpdySerializedFrame SpdyFramer::SpdyHeaderFrameIterator::NextFrame() {
1793 if (!has_next_frame_) { 1793 if (!has_next_frame_) {
1794 SPDY_BUG << "SpdyFramer::SpdyHeaderFrameIterator::NextFrame called without " 1794 SPDY_BUG << "SpdyFramer::SpdyHeaderFrameIterator::NextFrame called without "
1795 << "a next frame."; 1795 << "a next frame.";
1796 return SpdySerializedFrame(); 1796 return SpdySerializedFrame();
1797 } 1797 }
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
1999 size += headers.padding_payload_len(); 1999 size += headers.padding_payload_len();
2000 } 2000 }
2001 2001
2002 int weight = 0; 2002 int weight = 0;
2003 if (headers.has_priority()) { 2003 if (headers.has_priority()) {
2004 weight = ClampHttp2Weight(headers.weight()); 2004 weight = ClampHttp2Weight(headers.weight());
2005 size += 5; 2005 size += 5;
2006 } 2006 }
2007 2007
2008 string hpack_encoding; 2008 string hpack_encoding;
2009 if (compression_enabled()) { 2009 GetHpackEncoder()->EncodeHeaderSet(headers.header_block(), &hpack_encoding);
2010 GetHpackEncoder()->EncodeHeaderSet(headers.header_block(), &hpack_encoding);
2011 } else {
2012 GetHpackEncoder()->EncodeHeaderSetWithoutCompression(headers.header_block(),
2013 &hpack_encoding);
2014 }
2015 size += hpack_encoding.size(); 2010 size += hpack_encoding.size();
2016 if (size > kMaxControlFrameSize) { 2011 if (size > kMaxControlFrameSize) {
2017 size += GetNumberRequiredContinuationFrames(size) * 2012 size += GetNumberRequiredContinuationFrames(size) *
2018 GetContinuationMinimumSize(); 2013 GetContinuationMinimumSize();
2019 flags &= ~HEADERS_FLAG_END_HEADERS; 2014 flags &= ~HEADERS_FLAG_END_HEADERS;
2020 } 2015 }
2021 2016
2022 SpdyFrameBuilder builder(size); 2017 SpdyFrameBuilder builder(size);
2023 builder.BeginNewFrame(*this, HEADERS, flags, headers.stream_id()); 2018 builder.BeginNewFrame(*this, HEADERS, flags, headers.stream_id());
2024 DCHECK_EQ(GetHeadersMinimumSize(), builder.length()); 2019 DCHECK_EQ(GetHeadersMinimumSize(), builder.length());
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
2076 // The size of this frame, including variable-length name-value block. 2071 // The size of this frame, including variable-length name-value block.
2077 size_t size = GetPushPromiseMinimumSize(); 2072 size_t size = GetPushPromiseMinimumSize();
2078 2073
2079 if (push_promise.padded()) { 2074 if (push_promise.padded()) {
2080 flags |= PUSH_PROMISE_FLAG_PADDED; 2075 flags |= PUSH_PROMISE_FLAG_PADDED;
2081 size += kPadLengthFieldSize; 2076 size += kPadLengthFieldSize;
2082 size += push_promise.padding_payload_len(); 2077 size += push_promise.padding_payload_len();
2083 } 2078 }
2084 2079
2085 string hpack_encoding; 2080 string hpack_encoding;
2086 if (compression_enabled()) { 2081 GetHpackEncoder()->EncodeHeaderSet(push_promise.header_block(),
2087 GetHpackEncoder()->EncodeHeaderSet(push_promise.header_block(), 2082 &hpack_encoding);
2088 &hpack_encoding);
2089 } else {
2090 GetHpackEncoder()->EncodeHeaderSetWithoutCompression(
2091 push_promise.header_block(), &hpack_encoding);
2092 }
2093 size += hpack_encoding.size(); 2083 size += hpack_encoding.size();
2094 if (size > kMaxControlFrameSize) { 2084 if (size > kMaxControlFrameSize) {
2095 size += GetNumberRequiredContinuationFrames(size) * 2085 size += GetNumberRequiredContinuationFrames(size) *
2096 GetContinuationMinimumSize(); 2086 GetContinuationMinimumSize();
2097 flags &= ~PUSH_PROMISE_FLAG_END_PUSH_PROMISE; 2087 flags &= ~PUSH_PROMISE_FLAG_END_PUSH_PROMISE;
2098 } 2088 }
2099 2089
2100 SpdyFrameBuilder builder(size); 2090 SpdyFrameBuilder builder(size);
2101 builder.BeginNewFrame(*this, 2091 builder.BeginNewFrame(*this,
2102 PUSH_PROMISE, 2092 PUSH_PROMISE,
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
2360 builder->WriteBytes( 2350 builder->WriteBytes(
2361 &hpack_encoding[hpack_encoding.size() - bytes_remaining], 2351 &hpack_encoding[hpack_encoding.size() - bytes_remaining],
2362 bytes_to_write); 2352 bytes_to_write);
2363 bytes_remaining -= bytes_to_write; 2353 bytes_remaining -= bytes_to_write;
2364 } 2354 }
2365 } 2355 }
2366 2356
2367 HpackEncoder* SpdyFramer::GetHpackEncoder() { 2357 HpackEncoder* SpdyFramer::GetHpackEncoder() {
2368 if (hpack_encoder_.get() == nullptr) { 2358 if (hpack_encoder_.get() == nullptr) {
2369 hpack_encoder_.reset(new HpackEncoder(ObtainHpackHuffmanTable())); 2359 hpack_encoder_.reset(new HpackEncoder(ObtainHpackHuffmanTable()));
2360 if (!compression_enabled()) {
2361 hpack_encoder_->DisableCompression();
2362 }
2370 } 2363 }
2371 return hpack_encoder_.get(); 2364 return hpack_encoder_.get();
2372 } 2365 }
2373 2366
2374 HpackDecoderInterface* SpdyFramer::GetHpackDecoder() { 2367 HpackDecoderInterface* SpdyFramer::GetHpackDecoder() {
2375 if (hpack_decoder_.get() == nullptr) { 2368 if (hpack_decoder_.get() == nullptr) {
2376 if (FLAGS_chromium_http2_flag_spdy_use_hpack_decoder2) { 2369 if (FLAGS_chromium_http2_flag_spdy_use_hpack_decoder2) {
2377 hpack_decoder_.reset(new HpackDecoder2()); 2370 hpack_decoder_.reset(new HpackDecoder2());
2378 } else { 2371 } else {
2379 hpack_decoder_.reset(new HpackDecoder()); 2372 hpack_decoder_.reset(new HpackDecoder());
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2440 builder->WriteUInt32(header_block.size()); 2433 builder->WriteUInt32(header_block.size());
2441 2434
2442 // Serialize each header. 2435 // Serialize each header.
2443 for (const auto& header : header_block) { 2436 for (const auto& header : header_block) {
2444 builder->WriteStringPiece32(base::ToLowerASCII(header.first)); 2437 builder->WriteStringPiece32(base::ToLowerASCII(header.first));
2445 builder->WriteStringPiece32(header.second); 2438 builder->WriteStringPiece32(header.second);
2446 } 2439 }
2447 } 2440 }
2448 2441
2449 } // namespace net 2442 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/hpack/hpack_encoder_test.cc ('k') | net/spdy/spdy_framer_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698