OLD | NEW |
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/buffered_spdy_framer.h" | 5 #include "net/spdy/buffered_spdy_framer.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 | 8 |
| 9 namespace { |
| 10 |
| 11 bool g_enable_compression_default = true; |
| 12 |
| 13 } // namespace |
| 14 |
9 namespace net { | 15 namespace net { |
10 | 16 |
11 BufferedSpdyFramer::BufferedSpdyFramer(int version) | 17 BufferedSpdyFramer::BufferedSpdyFramer(int version) |
12 : spdy_framer_(version), | 18 : spdy_framer_(version), |
13 visitor_(NULL), | 19 visitor_(NULL), |
14 header_buffer_used_(0), | 20 header_buffer_used_(0), |
15 header_buffer_valid_(false), | 21 header_buffer_valid_(false), |
16 header_stream_id_(SpdyFramer::kInvalidStream), | 22 header_stream_id_(SpdyFramer::kInvalidStream), |
17 frames_received_(0) { | 23 frames_received_(0) { |
| 24 spdy_framer_.set_enable_compression(g_enable_compression_default); |
18 memset(header_buffer_, 0, sizeof(header_buffer_)); | 25 memset(header_buffer_, 0, sizeof(header_buffer_)); |
19 } | 26 } |
20 | 27 |
21 BufferedSpdyFramer::~BufferedSpdyFramer() { | 28 BufferedSpdyFramer::~BufferedSpdyFramer() { |
22 } | 29 } |
23 | 30 |
24 void BufferedSpdyFramer::set_visitor( | 31 void BufferedSpdyFramer::set_visitor( |
25 BufferedSpdyFramerVisitorInterface* visitor) { | 32 BufferedSpdyFramerVisitorInterface* visitor) { |
26 visitor_ = visitor; | 33 visitor_ = visitor; |
27 spdy_framer_.set_visitor(this); | 34 spdy_framer_.set_visitor(this); |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 | 250 |
244 bool BufferedSpdyFramer::IsCompressible(const SpdyFrame& frame) const { | 251 bool BufferedSpdyFramer::IsCompressible(const SpdyFrame& frame) const { |
245 return spdy_framer_.IsCompressible(frame); | 252 return spdy_framer_.IsCompressible(frame); |
246 } | 253 } |
247 | 254 |
248 SpdyControlFrame* BufferedSpdyFramer::CompressControlFrame( | 255 SpdyControlFrame* BufferedSpdyFramer::CompressControlFrame( |
249 const SpdyControlFrame& frame) { | 256 const SpdyControlFrame& frame) { |
250 return spdy_framer_.CompressControlFrame(frame); | 257 return spdy_framer_.CompressControlFrame(frame); |
251 } | 258 } |
252 | 259 |
| 260 // static |
| 261 void BufferedSpdyFramer::set_enable_compression_default(bool value) { |
| 262 g_enable_compression_default = value; |
| 263 } |
| 264 |
253 void BufferedSpdyFramer::InitHeaderStreaming(const SpdyControlFrame* frame) { | 265 void BufferedSpdyFramer::InitHeaderStreaming(const SpdyControlFrame* frame) { |
254 memset(header_buffer_, 0, kHeaderBufferSize); | 266 memset(header_buffer_, 0, kHeaderBufferSize); |
255 header_buffer_used_ = 0; | 267 header_buffer_used_ = 0; |
256 header_buffer_valid_ = true; | 268 header_buffer_valid_ = true; |
257 header_stream_id_ = SpdyFramer::GetControlFrameStreamId(frame); | 269 header_stream_id_ = SpdyFramer::GetControlFrameStreamId(frame); |
258 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream); | 270 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream); |
259 | 271 |
260 int32 frame_size_without_header_block = SpdyFrame::kHeaderSize; | 272 int32 frame_size_without_header_block = SpdyFrame::kHeaderSize; |
261 switch (frame->type()) { | 273 switch (frame->type()) { |
262 case SYN_STREAM: | 274 case SYN_STREAM: |
263 frame_size_without_header_block = SpdySynStreamControlFrame::size(); | 275 frame_size_without_header_block = SpdySynStreamControlFrame::size(); |
264 break; | 276 break; |
265 case SYN_REPLY: | 277 case SYN_REPLY: |
266 frame_size_without_header_block = SpdySynReplyControlFrame::size(); | 278 frame_size_without_header_block = SpdySynReplyControlFrame::size(); |
267 break; | 279 break; |
268 case HEADERS: | 280 case HEADERS: |
269 frame_size_without_header_block = SpdyHeadersControlFrame::size(); | 281 frame_size_without_header_block = SpdyHeadersControlFrame::size(); |
270 break; | 282 break; |
271 default: | 283 default: |
272 DCHECK(false); // Error! | 284 DCHECK(false); // Error! |
273 break; | 285 break; |
274 } | 286 } |
275 control_frame_.reset(new SpdyFrame(frame_size_without_header_block)); | 287 control_frame_.reset(new SpdyFrame(frame_size_without_header_block)); |
276 memcpy(control_frame_.get()->data(), frame->data(), | 288 memcpy(control_frame_.get()->data(), frame->data(), |
277 frame_size_without_header_block); | 289 frame_size_without_header_block); |
278 } | 290 } |
279 | 291 |
280 } // namespace net | 292 } // namespace net |
OLD | NEW |