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 spdy { | 9 namespace spdy { |
10 | 10 |
11 BufferedSpdyFramer::BufferedSpdyFramer(int version) | 11 BufferedSpdyFramer::BufferedSpdyFramer(int version) |
12 : spdy_framer_(), | 12 : spdy_framer_(version), |
13 visitor_(NULL), | 13 visitor_(NULL), |
14 header_buffer_used_(0), | 14 header_buffer_used_(0), |
15 header_buffer_valid_(false), | 15 header_buffer_valid_(false), |
16 header_stream_id_(SpdyFramer::kInvalidStream), | 16 header_stream_id_(SpdyFramer::kInvalidStream), |
17 frames_received_(0) { | 17 frames_received_(0) { |
18 memset(header_buffer_, 0, sizeof(header_buffer_)); | 18 memset(header_buffer_, 0, sizeof(header_buffer_)); |
19 } | 19 } |
20 | 20 |
21 BufferedSpdyFramer::~BufferedSpdyFramer() { | 21 BufferedSpdyFramer::~BufferedSpdyFramer() { |
22 } | 22 } |
(...skipping 19 matching lines...) Expand all Loading... |
42 break; | 42 break; |
43 case GOAWAY: | 43 case GOAWAY: |
44 visitor_->OnGoAway( | 44 visitor_->OnGoAway( |
45 *reinterpret_cast<const spdy::SpdyGoAwayControlFrame*>(frame)); | 45 *reinterpret_cast<const spdy::SpdyGoAwayControlFrame*>(frame)); |
46 break; | 46 break; |
47 case PING: | 47 case PING: |
48 visitor_->OnPing( | 48 visitor_->OnPing( |
49 *reinterpret_cast<const spdy::SpdyPingControlFrame*>(frame)); | 49 *reinterpret_cast<const spdy::SpdyPingControlFrame*>(frame)); |
50 break; | 50 break; |
51 case SETTINGS: | 51 case SETTINGS: |
52 visitor_->OnSettings( | |
53 *reinterpret_cast<const spdy::SpdySettingsControlFrame*>(frame)); | |
54 break; | 52 break; |
55 case RST_STREAM: | 53 case RST_STREAM: |
56 visitor_->OnRstStream( | 54 visitor_->OnRstStream( |
57 *reinterpret_cast<const spdy::SpdyRstStreamControlFrame*>(frame)); | 55 *reinterpret_cast<const spdy::SpdyRstStreamControlFrame*>(frame)); |
58 break; | 56 break; |
59 case spdy::WINDOW_UPDATE: | 57 case spdy::WINDOW_UPDATE: |
60 visitor_->OnWindowUpdate( | 58 visitor_->OnWindowUpdate( |
61 *reinterpret_cast<const spdy::SpdyWindowUpdateControlFrame*>(frame)); | 59 *reinterpret_cast<const spdy::SpdyWindowUpdateControlFrame*>(frame)); |
62 break; | 60 break; |
63 default: | 61 default: |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 frames_received_++; | 127 frames_received_++; |
130 header_stream_id_ = frame->stream_id(); | 128 header_stream_id_ = frame->stream_id(); |
131 } | 129 } |
132 | 130 |
133 void BufferedSpdyFramer::OnStreamFrameData(SpdyStreamId stream_id, | 131 void BufferedSpdyFramer::OnStreamFrameData(SpdyStreamId stream_id, |
134 const char* data, | 132 const char* data, |
135 size_t len) { | 133 size_t len) { |
136 visitor_->OnStreamFrameData(stream_id, data, len); | 134 visitor_->OnStreamFrameData(stream_id, data, len); |
137 } | 135 } |
138 | 136 |
| 137 void BufferedSpdyFramer::OnSetting(SpdySettingsIds id, |
| 138 uint8 flags, |
| 139 uint32 value) { |
| 140 visitor_->OnSetting(id, flags, value); |
| 141 } |
| 142 |
139 int BufferedSpdyFramer::protocol_version() { | 143 int BufferedSpdyFramer::protocol_version() { |
140 return spdy_framer_.protocol_version(); | 144 return spdy_framer_.protocol_version(); |
141 } | 145 } |
142 | 146 |
143 size_t BufferedSpdyFramer::ProcessInput(const char* data, size_t len) { | 147 size_t BufferedSpdyFramer::ProcessInput(const char* data, size_t len) { |
144 return spdy_framer_.ProcessInput(data, len); | 148 return spdy_framer_.ProcessInput(data, len); |
145 } | 149 } |
146 | 150 |
147 void BufferedSpdyFramer::Reset() { | 151 void BufferedSpdyFramer::Reset() { |
148 spdy_framer_.Reset(); | 152 spdy_framer_.Reset(); |
149 } | 153 } |
150 | 154 |
151 SpdyFramer::SpdyError BufferedSpdyFramer::error_code() const { | 155 SpdyFramer::SpdyError BufferedSpdyFramer::error_code() const { |
152 return spdy_framer_.error_code(); | 156 return spdy_framer_.error_code(); |
153 } | 157 } |
154 | 158 |
155 SpdyFramer::SpdyState BufferedSpdyFramer::state() const { | 159 SpdyFramer::SpdyState BufferedSpdyFramer::state() const { |
156 return spdy_framer_.state(); | 160 return spdy_framer_.state(); |
157 } | 161 } |
158 | 162 |
159 bool BufferedSpdyFramer::MessageFullyRead() { | 163 bool BufferedSpdyFramer::MessageFullyRead() { |
160 return spdy_framer_.MessageFullyRead(); | 164 return spdy_framer_.MessageFullyRead(); |
161 } | 165 } |
162 | 166 |
163 bool BufferedSpdyFramer::HasError() { | 167 bool BufferedSpdyFramer::HasError() { |
164 return spdy_framer_.HasError(); | 168 return spdy_framer_.HasError(); |
165 } | 169 } |
166 | 170 |
167 bool BufferedSpdyFramer::ParseHeaderBlock(const SpdyFrame* frame, | |
168 SpdyHeaderBlock* block) { | |
169 return spdy_framer_.ParseHeaderBlock(frame, block); | |
170 } | |
171 | |
172 SpdySynStreamControlFrame* BufferedSpdyFramer::CreateSynStream( | 171 SpdySynStreamControlFrame* BufferedSpdyFramer::CreateSynStream( |
173 SpdyStreamId stream_id, | 172 SpdyStreamId stream_id, |
174 SpdyStreamId associated_stream_id, | 173 SpdyStreamId associated_stream_id, |
175 int priority, | 174 int priority, |
176 SpdyControlFlags flags, | 175 SpdyControlFlags flags, |
177 bool compressed, | 176 bool compressed, |
178 const SpdyHeaderBlock* headers) { | 177 const SpdyHeaderBlock* headers) { |
179 return spdy_framer_.CreateSynStream( | 178 return spdy_framer_.CreateSynStream( |
180 stream_id, associated_stream_id, priority, flags, compressed, headers); | 179 stream_id, associated_stream_id, priority, flags, compressed, headers); |
181 } | 180 } |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 return spdy_framer_.CreateCredentialFrame(credential); | 227 return spdy_framer_.CreateCredentialFrame(credential); |
229 } | 228 } |
230 | 229 |
231 SpdyDataFrame* BufferedSpdyFramer::CreateDataFrame(SpdyStreamId stream_id, | 230 SpdyDataFrame* BufferedSpdyFramer::CreateDataFrame(SpdyStreamId stream_id, |
232 const char* data, | 231 const char* data, |
233 uint32 len, | 232 uint32 len, |
234 SpdyDataFlags flags) { | 233 SpdyDataFlags flags) { |
235 return spdy_framer_.CreateDataFrame(stream_id, data, len, flags); | 234 return spdy_framer_.CreateDataFrame(stream_id, data, len, flags); |
236 } | 235 } |
237 | 236 |
| 237 SpdyPriority BufferedSpdyFramer::GetHighestPriority() const { |
| 238 return spdy_framer_.GetHighestPriority(); |
| 239 } |
| 240 |
238 SpdyFrame* BufferedSpdyFramer::CompressFrame(const SpdyFrame& frame) { | 241 SpdyFrame* BufferedSpdyFramer::CompressFrame(const SpdyFrame& frame) { |
239 return spdy_framer_.CompressFrame(frame); | 242 return spdy_framer_.CompressFrame(frame); |
240 } | 243 } |
241 | 244 |
242 bool BufferedSpdyFramer::IsCompressible(const SpdyFrame& frame) const { | 245 bool BufferedSpdyFramer::IsCompressible(const SpdyFrame& frame) const { |
243 return spdy_framer_.IsCompressible(frame); | 246 return spdy_framer_.IsCompressible(frame); |
244 } | 247 } |
245 | 248 |
246 void BufferedSpdyFramer::InitHeaderStreaming(const SpdyControlFrame* frame) { | 249 void BufferedSpdyFramer::InitHeaderStreaming(const SpdyControlFrame* frame) { |
247 memset(header_buffer_, 0, kHeaderBufferSize); | 250 memset(header_buffer_, 0, kHeaderBufferSize); |
(...skipping 16 matching lines...) Expand all Loading... |
264 default: | 267 default: |
265 DCHECK(false); // Error! | 268 DCHECK(false); // Error! |
266 break; | 269 break; |
267 } | 270 } |
268 control_frame_.reset(new SpdyFrame(frame_size_without_header_block)); | 271 control_frame_.reset(new SpdyFrame(frame_size_without_header_block)); |
269 memcpy(control_frame_.get()->data(), frame->data(), | 272 memcpy(control_frame_.get()->data(), frame->data(), |
270 frame_size_without_header_block); | 273 frame_size_without_header_block); |
271 } | 274 } |
272 | 275 |
273 } // namespace spdy | 276 } // namespace spdy |
OLD | NEW |