| 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 |