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

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

Issue 300553013: Add headers argument to BufferedSpdyFramerVisitorInterface::OnPushPromise (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: flip server unit test fix Created 6 years, 6 months 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/buffered_spdy_framer.h ('k') | net/spdy/buffered_spdy_framer_unittest.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/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 net { 9 namespace net {
10 10
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 case SYN_REPLY: 132 case SYN_REPLY:
133 visitor_->OnSynReply(control_frame_fields_->stream_id, 133 visitor_->OnSynReply(control_frame_fields_->stream_id,
134 control_frame_fields_->fin, 134 control_frame_fields_->fin,
135 headers); 135 headers);
136 break; 136 break;
137 case HEADERS: 137 case HEADERS:
138 visitor_->OnHeaders(control_frame_fields_->stream_id, 138 visitor_->OnHeaders(control_frame_fields_->stream_id,
139 control_frame_fields_->fin, 139 control_frame_fields_->fin,
140 headers); 140 headers);
141 break; 141 break;
142 case PUSH_PROMISE:
143 DCHECK_LT(SPDY3, protocol_version());
144 visitor_->OnPushPromise(control_frame_fields_->stream_id,
145 control_frame_fields_->promised_stream_id,
146 headers);
147 break;
142 default: 148 default:
143 DCHECK(false) << "Unexpect control frame type: " 149 DCHECK(false) << "Unexpect control frame type: "
144 << control_frame_fields_->type; 150 << control_frame_fields_->type;
145 break; 151 break;
146 } 152 }
147 control_frame_fields_.reset(NULL); 153 control_frame_fields_.reset(NULL);
148 return true; 154 return true;
149 } 155 }
150 156
151 const size_t available = kHeaderBufferSize - header_buffer_used_; 157 const size_t available = kHeaderBufferSize - header_buffer_used_;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 } 213 }
208 214
209 void BufferedSpdyFramer::OnWindowUpdate(SpdyStreamId stream_id, 215 void BufferedSpdyFramer::OnWindowUpdate(SpdyStreamId stream_id,
210 uint32 delta_window_size) { 216 uint32 delta_window_size) {
211 visitor_->OnWindowUpdate(stream_id, delta_window_size); 217 visitor_->OnWindowUpdate(stream_id, delta_window_size);
212 } 218 }
213 219
214 void BufferedSpdyFramer::OnPushPromise(SpdyStreamId stream_id, 220 void BufferedSpdyFramer::OnPushPromise(SpdyStreamId stream_id,
215 SpdyStreamId promised_stream_id, 221 SpdyStreamId promised_stream_id,
216 bool end) { 222 bool end) {
217 // TODO(jgraettinger): Deliver headers, similar to OnHeaders. 223 DCHECK_LT(SPDY3, protocol_version());
218 visitor_->OnPushPromise(stream_id, promised_stream_id); 224 frames_received_++;
225 DCHECK(!control_frame_fields_.get());
226 control_frame_fields_.reset(new ControlFrameFields());
227 control_frame_fields_->type = PUSH_PROMISE;
228 control_frame_fields_->stream_id = stream_id;
229 control_frame_fields_->promised_stream_id = promised_stream_id;
230
231 InitHeaderStreaming(stream_id);
219 } 232 }
220 233
221 void BufferedSpdyFramer::OnContinuation(SpdyStreamId stream_id, bool end) { 234 void BufferedSpdyFramer::OnContinuation(SpdyStreamId stream_id, bool end) {
222 } 235 }
223 236
224 SpdyMajorVersion BufferedSpdyFramer::protocol_version() { 237 SpdyMajorVersion BufferedSpdyFramer::protocol_version() {
225 return spdy_framer_.protocol_version(); 238 return spdy_framer_.protocol_version();
226 } 239 }
227 240
228 size_t BufferedSpdyFramer::ProcessInput(const char* data, size_t len) { 241 size_t BufferedSpdyFramer::ProcessInput(const char* data, size_t len) {
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 SpdyFrame* BufferedSpdyFramer::CreateDataFrame(SpdyStreamId stream_id, 359 SpdyFrame* BufferedSpdyFramer::CreateDataFrame(SpdyStreamId stream_id,
347 const char* data, 360 const char* data,
348 uint32 len, 361 uint32 len,
349 SpdyDataFlags flags) { 362 SpdyDataFlags flags) {
350 SpdyDataIR data_ir(stream_id, 363 SpdyDataIR data_ir(stream_id,
351 base::StringPiece(data, len)); 364 base::StringPiece(data, len));
352 data_ir.set_fin((flags & DATA_FLAG_FIN) != 0); 365 data_ir.set_fin((flags & DATA_FLAG_FIN) != 0);
353 return spdy_framer_.SerializeData(data_ir); 366 return spdy_framer_.SerializeData(data_ir);
354 } 367 }
355 368
369 // TODO(jgraettinger): Eliminate uses of this method (prefer SpdyPushPromiseIR).
370 SpdyFrame* BufferedSpdyFramer::CreatePushPromise(
371 SpdyStreamId stream_id,
372 SpdyStreamId promised_stream_id,
373 const SpdyHeaderBlock* headers) {
374 SpdyPushPromiseIR push_promise_ir(stream_id, promised_stream_id);
375 push_promise_ir.set_name_value_block(*headers);
376 return spdy_framer_.SerializePushPromise(push_promise_ir);
377 }
378
356 SpdyPriority BufferedSpdyFramer::GetHighestPriority() const { 379 SpdyPriority BufferedSpdyFramer::GetHighestPriority() const {
357 return spdy_framer_.GetHighestPriority(); 380 return spdy_framer_.GetHighestPriority();
358 } 381 }
359 382
360 void BufferedSpdyFramer::InitHeaderStreaming(SpdyStreamId stream_id) { 383 void BufferedSpdyFramer::InitHeaderStreaming(SpdyStreamId stream_id) {
361 memset(header_buffer_, 0, kHeaderBufferSize); 384 memset(header_buffer_, 0, kHeaderBufferSize);
362 header_buffer_used_ = 0; 385 header_buffer_used_ = 0;
363 header_buffer_valid_ = true; 386 header_buffer_valid_ = true;
364 header_stream_id_ = stream_id; 387 header_stream_id_ = stream_id;
365 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream); 388 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream);
366 } 389 }
367 390
368 } // namespace net 391 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/buffered_spdy_framer.h ('k') | net/spdy/buffered_spdy_framer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698