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

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

Issue 2174943002: Avoid SpdyHeaderBlock copy in SpdyStream::OnPushPromiseHeadersReceived(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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 <utility> 7 #include <utility>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 break; 107 break;
108 case SYN_REPLY: 108 case SYN_REPLY:
109 NOTREACHED(); 109 NOTREACHED();
110 break; 110 break;
111 case HEADERS: 111 case HEADERS:
112 visitor_->OnHeaders(control_frame_fields_->stream_id, 112 visitor_->OnHeaders(control_frame_fields_->stream_id,
113 control_frame_fields_->has_priority, 113 control_frame_fields_->has_priority,
114 control_frame_fields_->weight, 114 control_frame_fields_->weight,
115 control_frame_fields_->parent_stream_id, 115 control_frame_fields_->parent_stream_id,
116 control_frame_fields_->exclusive, 116 control_frame_fields_->exclusive,
117 control_frame_fields_->fin, headers); 117 control_frame_fields_->fin, std::move(headers));
118 break; 118 break;
119 case PUSH_PROMISE: 119 case PUSH_PROMISE:
120 visitor_->OnPushPromise(control_frame_fields_->stream_id, 120 visitor_->OnPushPromise(control_frame_fields_->stream_id,
121 control_frame_fields_->promised_stream_id, 121 control_frame_fields_->promised_stream_id,
122 headers); 122 std::move(headers));
123 break; 123 break;
124 default: 124 default:
125 DCHECK(false) << "Unexpect control frame type: " 125 DCHECK(false) << "Unexpect control frame type: "
126 << control_frame_fields_->type; 126 << control_frame_fields_->type;
127 break; 127 break;
128 } 128 }
129 control_frame_fields_.reset(NULL); 129 control_frame_fields_.reset(NULL);
130 return true; 130 return true;
131 } 131 }
132 132
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 } 186 }
187 DCHECK(control_frame_fields_.get()); 187 DCHECK(control_frame_fields_.get());
188 switch (control_frame_fields_->type) { 188 switch (control_frame_fields_->type) {
189 case SYN_STREAM: 189 case SYN_STREAM:
190 NOTREACHED(); 190 NOTREACHED();
191 break; 191 break;
192 case SYN_REPLY: 192 case SYN_REPLY:
193 NOTREACHED(); 193 NOTREACHED();
194 break; 194 break;
195 case HEADERS: 195 case HEADERS:
196 visitor_->OnHeaders(control_frame_fields_->stream_id, 196 visitor_->OnHeaders(
197 control_frame_fields_->has_priority, 197 control_frame_fields_->stream_id, control_frame_fields_->has_priority,
198 control_frame_fields_->weight, 198 control_frame_fields_->weight,
199 control_frame_fields_->parent_stream_id, 199 control_frame_fields_->parent_stream_id,
200 control_frame_fields_->exclusive, 200 control_frame_fields_->exclusive, control_frame_fields_->fin,
201 control_frame_fields_->fin, coalescer_->headers()); 201 coalescer_->release_headers());
202 break; 202 break;
203 case PUSH_PROMISE: 203 case PUSH_PROMISE:
204 visitor_->OnPushPromise(control_frame_fields_->stream_id, 204 visitor_->OnPushPromise(control_frame_fields_->stream_id,
205 control_frame_fields_->promised_stream_id, 205 control_frame_fields_->promised_stream_id,
206 coalescer_->headers()); 206 coalescer_->release_headers());
207 break; 207 break;
208 default: 208 default:
209 DCHECK(false) << "Unexpect control frame type: " 209 DCHECK(false) << "Unexpect control frame type: "
210 << control_frame_fields_->type; 210 << control_frame_fields_->type;
211 break; 211 break;
212 } 212 }
213 control_frame_fields_.reset(NULL); 213 control_frame_fields_.reset(NULL);
214 } 214 }
215 215
216 void BufferedSpdyFramer::OnSettings(bool clear_persisted) { 216 void BufferedSpdyFramer::OnSettings(bool clear_persisted) {
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 } 414 }
415 415
416 void BufferedSpdyFramer::InitHeaderStreaming(SpdyStreamId stream_id) { 416 void BufferedSpdyFramer::InitHeaderStreaming(SpdyStreamId stream_id) {
417 header_buffer_.clear(); 417 header_buffer_.clear();
418 header_buffer_valid_ = true; 418 header_buffer_valid_ = true;
419 header_stream_id_ = stream_id; 419 header_stream_id_ = stream_id;
420 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream); 420 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream);
421 } 421 }
422 422
423 } // namespace net 423 } // 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