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

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

Issue 2566513004: This change removes SpdyFramer::set_enable_compression() in favor of a constructor parameter. (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/spdy_framer.h ('k') | net/spdy/spdy_framer_decoder_adapter.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 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 size_t len) { 146 size_t len) {
147 return true; 147 return true;
148 } 148 }
149 149
150 bool SpdyFramerVisitorInterface::OnRstStreamFrameData( 150 bool SpdyFramerVisitorInterface::OnRstStreamFrameData(
151 const char* rst_stream_data, 151 const char* rst_stream_data,
152 size_t len) { 152 size_t len) {
153 return true; 153 return true;
154 } 154 }
155 155
156 SpdyFramer::SpdyFramer(SpdyFramer::DecoderAdapterFactoryFn adapter_factory) 156 SpdyFramer::SpdyFramer(SpdyFramer::DecoderAdapterFactoryFn adapter_factory,
157 CompressionOption option)
157 : current_frame_buffer_(kControlFrameBufferSize), 158 : current_frame_buffer_(kControlFrameBufferSize),
158 expect_continuation_(0), 159 expect_continuation_(0),
159 visitor_(NULL), 160 visitor_(NULL),
160 debug_visitor_(NULL), 161 debug_visitor_(NULL),
161 header_handler_(nullptr), 162 header_handler_(nullptr),
162 enable_compression_(true), 163 compression_option_(option),
163 probable_http_response_(false), 164 probable_http_response_(false),
164 end_stream_when_done_(false) { 165 end_stream_when_done_(false) {
165 // TODO(bnc): The way kMaxControlFrameSize is currently interpreted, it 166 // TODO(bnc): The way kMaxControlFrameSize is currently interpreted, it
166 // includes the frame header, whereas kSpdyInitialFrameSizeLimit does not. 167 // includes the frame header, whereas kSpdyInitialFrameSizeLimit does not.
167 // Therefore this assertion is unnecessarily strict. 168 // Therefore this assertion is unnecessarily strict.
168 static_assert(kMaxControlFrameSize <= kSpdyInitialFrameSizeLimit, 169 static_assert(kMaxControlFrameSize <= kSpdyInitialFrameSizeLimit,
169 "Our send limit should be at most our receive limit"); 170 "Our send limit should be at most our receive limit");
170 Reset(); 171 Reset();
171 172
172 if (adapter_factory != nullptr) { 173 if (adapter_factory != nullptr) {
173 decoder_adapter_ = adapter_factory(this); 174 decoder_adapter_ = adapter_factory(this);
174 } 175 }
175 } 176 }
176 177
177 SpdyFramer::SpdyFramer() : SpdyFramer(&DecoderAdapterFactory) {} 178 SpdyFramer::SpdyFramer(CompressionOption option)
179 : SpdyFramer(&DecoderAdapterFactory, option) {}
178 180
179 SpdyFramer::~SpdyFramer() { 181 SpdyFramer::~SpdyFramer() {
180 } 182 }
181 183
182 void SpdyFramer::Reset() { 184 void SpdyFramer::Reset() {
183 if (decoder_adapter_ != nullptr) { 185 if (decoder_adapter_ != nullptr) {
184 decoder_adapter_->Reset(); 186 decoder_adapter_->Reset();
185 } 187 }
186 state_ = SPDY_READY_FOR_FRAME; 188 state_ = SPDY_READY_FOR_FRAME;
187 previous_state_ = SPDY_READY_FOR_FRAME; 189 previous_state_ = SPDY_READY_FOR_FRAME;
(...skipping 1587 matching lines...) Expand 10 before | Expand all | Expand 10 after
1775 1777
1776 SpdyFramer::SpdyHeaderFrameIterator::SpdyHeaderFrameIterator( 1778 SpdyFramer::SpdyHeaderFrameIterator::SpdyHeaderFrameIterator(
1777 SpdyFramer* framer, 1779 SpdyFramer* framer,
1778 std::unique_ptr<SpdyHeadersIR> headers_ir) 1780 std::unique_ptr<SpdyHeadersIR> headers_ir)
1779 : headers_ir_(std::move(headers_ir)), 1781 : headers_ir_(std::move(headers_ir)),
1780 framer_(framer), 1782 framer_(framer),
1781 debug_total_size_(0), 1783 debug_total_size_(0),
1782 is_first_frame_(true), 1784 is_first_frame_(true),
1783 has_next_frame_(true) { 1785 has_next_frame_(true) {
1784 encoder_ = framer_->GetHpackEncoder()->EncodeHeaderSet( 1786 encoder_ = framer_->GetHpackEncoder()->EncodeHeaderSet(
1785 headers_ir_->header_block(), framer_->enable_compression_); 1787 headers_ir_->header_block(), framer_->compression_enabled());
1786 } 1788 }
1787 1789
1788 SpdyFramer::SpdyHeaderFrameIterator::~SpdyHeaderFrameIterator() {} 1790 SpdyFramer::SpdyHeaderFrameIterator::~SpdyHeaderFrameIterator() {}
1789 1791
1790 SpdySerializedFrame SpdyFramer::SpdyHeaderFrameIterator::NextFrame() { 1792 SpdySerializedFrame SpdyFramer::SpdyHeaderFrameIterator::NextFrame() {
1791 if (!has_next_frame_) { 1793 if (!has_next_frame_) {
1792 SPDY_BUG << "SpdyFramer::SpdyHeaderFrameIterator::NextFrame called without " 1794 SPDY_BUG << "SpdyFramer::SpdyHeaderFrameIterator::NextFrame called without "
1793 << "a next frame."; 1795 << "a next frame.";
1794 return SpdySerializedFrame(); 1796 return SpdySerializedFrame();
1795 } 1797 }
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
1997 size += headers.padding_payload_len(); 1999 size += headers.padding_payload_len();
1998 } 2000 }
1999 2001
2000 int weight = 0; 2002 int weight = 0;
2001 if (headers.has_priority()) { 2003 if (headers.has_priority()) {
2002 weight = ClampHttp2Weight(headers.weight()); 2004 weight = ClampHttp2Weight(headers.weight());
2003 size += 5; 2005 size += 5;
2004 } 2006 }
2005 2007
2006 string hpack_encoding; 2008 string hpack_encoding;
2007 if (enable_compression_) { 2009 if (compression_enabled()) {
2008 GetHpackEncoder()->EncodeHeaderSet(headers.header_block(), &hpack_encoding); 2010 GetHpackEncoder()->EncodeHeaderSet(headers.header_block(), &hpack_encoding);
2009 } else { 2011 } else {
2010 GetHpackEncoder()->EncodeHeaderSetWithoutCompression(headers.header_block(), 2012 GetHpackEncoder()->EncodeHeaderSetWithoutCompression(headers.header_block(),
2011 &hpack_encoding); 2013 &hpack_encoding);
2012 } 2014 }
2013 size += hpack_encoding.size(); 2015 size += hpack_encoding.size();
2014 if (size > kMaxControlFrameSize) { 2016 if (size > kMaxControlFrameSize) {
2015 size += GetNumberRequiredContinuationFrames(size) * 2017 size += GetNumberRequiredContinuationFrames(size) *
2016 GetContinuationMinimumSize(); 2018 GetContinuationMinimumSize();
2017 flags &= ~HEADERS_FLAG_END_HEADERS; 2019 flags &= ~HEADERS_FLAG_END_HEADERS;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
2074 // The size of this frame, including variable-length name-value block. 2076 // The size of this frame, including variable-length name-value block.
2075 size_t size = GetPushPromiseMinimumSize(); 2077 size_t size = GetPushPromiseMinimumSize();
2076 2078
2077 if (push_promise.padded()) { 2079 if (push_promise.padded()) {
2078 flags |= PUSH_PROMISE_FLAG_PADDED; 2080 flags |= PUSH_PROMISE_FLAG_PADDED;
2079 size += kPadLengthFieldSize; 2081 size += kPadLengthFieldSize;
2080 size += push_promise.padding_payload_len(); 2082 size += push_promise.padding_payload_len();
2081 } 2083 }
2082 2084
2083 string hpack_encoding; 2085 string hpack_encoding;
2084 if (enable_compression_) { 2086 if (compression_enabled()) {
2085 GetHpackEncoder()->EncodeHeaderSet(push_promise.header_block(), 2087 GetHpackEncoder()->EncodeHeaderSet(push_promise.header_block(),
2086 &hpack_encoding); 2088 &hpack_encoding);
2087 } else { 2089 } else {
2088 GetHpackEncoder()->EncodeHeaderSetWithoutCompression( 2090 GetHpackEncoder()->EncodeHeaderSetWithoutCompression(
2089 push_promise.header_block(), &hpack_encoding); 2091 push_promise.header_block(), &hpack_encoding);
2090 } 2092 }
2091 size += hpack_encoding.size(); 2093 size += hpack_encoding.size();
2092 if (size > kMaxControlFrameSize) { 2094 if (size > kMaxControlFrameSize) {
2093 size += GetNumberRequiredContinuationFrames(size) * 2095 size += GetNumberRequiredContinuationFrames(size) *
2094 GetContinuationMinimumSize(); 2096 GetContinuationMinimumSize();
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
2438 builder->WriteUInt32(header_block.size()); 2440 builder->WriteUInt32(header_block.size());
2439 2441
2440 // Serialize each header. 2442 // Serialize each header.
2441 for (const auto& header : header_block) { 2443 for (const auto& header : header_block) {
2442 builder->WriteStringPiece32(base::ToLowerASCII(header.first)); 2444 builder->WriteStringPiece32(base::ToLowerASCII(header.first));
2443 builder->WriteStringPiece32(header.second); 2445 builder->WriteStringPiece32(header.second);
2444 } 2446 }
2445 } 2447 }
2446 2448
2447 } // namespace net 2449 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_framer.h ('k') | net/spdy/spdy_framer_decoder_adapter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698