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

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

Issue 1852423004: Implement SpdySerializedFrame move semantics. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 bool BufferedSpdyFramer::MessageFullyRead() { 319 bool BufferedSpdyFramer::MessageFullyRead() {
320 return state() == SpdyFramer::SPDY_FRAME_COMPLETE; 320 return state() == SpdyFramer::SPDY_FRAME_COMPLETE;
321 } 321 }
322 322
323 bool BufferedSpdyFramer::HasError() { 323 bool BufferedSpdyFramer::HasError() {
324 return spdy_framer_.HasError(); 324 return spdy_framer_.HasError();
325 } 325 }
326 326
327 // TODO(jgraettinger): Eliminate uses of this method (prefer 327 // TODO(jgraettinger): Eliminate uses of this method (prefer
328 // SpdySynStreamIR). 328 // SpdySynStreamIR).
329 SpdyFrame* BufferedSpdyFramer::CreateSynStream( 329 SpdySerializedFrame* BufferedSpdyFramer::CreateSynStream(
330 SpdyStreamId stream_id, 330 SpdyStreamId stream_id,
331 SpdyStreamId associated_stream_id, 331 SpdyStreamId associated_stream_id,
332 SpdyPriority priority, 332 SpdyPriority priority,
333 SpdyControlFlags flags, 333 SpdyControlFlags flags,
334 const SpdyHeaderBlock* headers) { 334 const SpdyHeaderBlock* headers) {
335 SpdySynStreamIR syn_stream(stream_id); 335 SpdySynStreamIR syn_stream(stream_id);
336 syn_stream.set_associated_to_stream_id(associated_stream_id); 336 syn_stream.set_associated_to_stream_id(associated_stream_id);
337 syn_stream.set_priority(priority); 337 syn_stream.set_priority(priority);
338 syn_stream.set_fin((flags & CONTROL_FLAG_FIN) != 0); 338 syn_stream.set_fin((flags & CONTROL_FLAG_FIN) != 0);
339 syn_stream.set_unidirectional((flags & CONTROL_FLAG_UNIDIRECTIONAL) != 0); 339 syn_stream.set_unidirectional((flags & CONTROL_FLAG_UNIDIRECTIONAL) != 0);
340 // TODO(hkhalil): Avoid copy here. 340 // TODO(hkhalil): Avoid copy here.
341 syn_stream.set_header_block(*headers); 341 syn_stream.set_header_block(*headers);
342 return spdy_framer_.SerializeSynStream(syn_stream); 342 return new SpdySerializedFrame(spdy_framer_.SerializeSynStream(syn_stream));
343 } 343 }
344 344
345 // TODO(jgraettinger): Eliminate uses of this method (prefer 345 // TODO(jgraettinger): Eliminate uses of this method (prefer
346 // SpdySynReplyIR). 346 // SpdySynReplyIR).
347 SpdyFrame* BufferedSpdyFramer::CreateSynReply( 347 SpdySerializedFrame* BufferedSpdyFramer::CreateSynReply(
348 SpdyStreamId stream_id, 348 SpdyStreamId stream_id,
349 SpdyControlFlags flags, 349 SpdyControlFlags flags,
350 const SpdyHeaderBlock* headers) { 350 const SpdyHeaderBlock* headers) {
351 SpdySynReplyIR syn_reply(stream_id); 351 SpdySynReplyIR syn_reply(stream_id);
352 syn_reply.set_fin(flags & CONTROL_FLAG_FIN); 352 syn_reply.set_fin(flags & CONTROL_FLAG_FIN);
353 // TODO(hkhalil): Avoid copy here. 353 // TODO(hkhalil): Avoid copy here.
354 syn_reply.set_header_block(*headers); 354 syn_reply.set_header_block(*headers);
355 return spdy_framer_.SerializeSynReply(syn_reply); 355 return new SpdySerializedFrame(spdy_framer_.SerializeSynReply(syn_reply));
356 } 356 }
357 357
358 // TODO(jgraettinger): Eliminate uses of this method (prefer 358 // TODO(jgraettinger): Eliminate uses of this method (prefer
359 // SpdyRstStreamIR). 359 // SpdyRstStreamIR).
360 SpdyFrame* BufferedSpdyFramer::CreateRstStream( 360 SpdySerializedFrame* BufferedSpdyFramer::CreateRstStream(
361 SpdyStreamId stream_id, 361 SpdyStreamId stream_id,
362 SpdyRstStreamStatus status) const { 362 SpdyRstStreamStatus status) const {
363 SpdyRstStreamIR rst_ir(stream_id, status); 363 SpdyRstStreamIR rst_ir(stream_id, status);
364 return spdy_framer_.SerializeRstStream(rst_ir); 364 return new SpdySerializedFrame(spdy_framer_.SerializeRstStream(rst_ir));
365 } 365 }
366 366
367 // TODO(jgraettinger): Eliminate uses of this method (prefer 367 // TODO(jgraettinger): Eliminate uses of this method (prefer
368 // SpdySettingsIR). 368 // SpdySettingsIR).
369 SpdyFrame* BufferedSpdyFramer::CreateSettings( 369 SpdySerializedFrame* BufferedSpdyFramer::CreateSettings(
370 const SettingsMap& values) const { 370 const SettingsMap& values) const {
371 SpdySettingsIR settings_ir; 371 SpdySettingsIR settings_ir;
372 for (SettingsMap::const_iterator it = values.begin(); 372 for (SettingsMap::const_iterator it = values.begin();
373 it != values.end(); 373 it != values.end();
374 ++it) { 374 ++it) {
375 settings_ir.AddSetting( 375 settings_ir.AddSetting(
376 it->first, 376 it->first,
377 (it->second.first & SETTINGS_FLAG_PLEASE_PERSIST) != 0, 377 (it->second.first & SETTINGS_FLAG_PLEASE_PERSIST) != 0,
378 (it->second.first & SETTINGS_FLAG_PERSISTED) != 0, 378 (it->second.first & SETTINGS_FLAG_PERSISTED) != 0,
379 it->second.second); 379 it->second.second);
380 } 380 }
381 return spdy_framer_.SerializeSettings(settings_ir); 381 return new SpdySerializedFrame(spdy_framer_.SerializeSettings(settings_ir));
382 } 382 }
383 383
384 // TODO(jgraettinger): Eliminate uses of this method (prefer SpdyPingIR). 384 // TODO(jgraettinger): Eliminate uses of this method (prefer SpdyPingIR).
385 SpdyFrame* BufferedSpdyFramer::CreatePingFrame(SpdyPingId unique_id, 385 SpdySerializedFrame* BufferedSpdyFramer::CreatePingFrame(SpdyPingId unique_id,
386 bool is_ack) const { 386 bool is_ack) const {
387 SpdyPingIR ping_ir(unique_id); 387 SpdyPingIR ping_ir(unique_id);
388 ping_ir.set_is_ack(is_ack); 388 ping_ir.set_is_ack(is_ack);
389 return spdy_framer_.SerializePing(ping_ir); 389 return new SpdySerializedFrame(spdy_framer_.SerializePing(ping_ir));
390 } 390 }
391 391
392 // TODO(jgraettinger): Eliminate uses of this method (prefer SpdyGoAwayIR). 392 // TODO(jgraettinger): Eliminate uses of this method (prefer SpdyGoAwayIR).
393 SpdyFrame* BufferedSpdyFramer::CreateGoAway( 393 SpdySerializedFrame* BufferedSpdyFramer::CreateGoAway(
394 SpdyStreamId last_accepted_stream_id, 394 SpdyStreamId last_accepted_stream_id,
395 SpdyGoAwayStatus status, 395 SpdyGoAwayStatus status,
396 base::StringPiece debug_data) const { 396 base::StringPiece debug_data) const {
397 SpdyGoAwayIR go_ir(last_accepted_stream_id, status, debug_data); 397 SpdyGoAwayIR go_ir(last_accepted_stream_id, status, debug_data);
398 return spdy_framer_.SerializeGoAway(go_ir); 398 return new SpdySerializedFrame(spdy_framer_.SerializeGoAway(go_ir));
399 } 399 }
400 400
401 // TODO(jgraettinger): Eliminate uses of this method (prefer SpdyHeadersIR). 401 // TODO(jgraettinger): Eliminate uses of this method (prefer SpdyHeadersIR).
402 SpdyFrame* BufferedSpdyFramer::CreateHeaders( 402 SpdySerializedFrame* BufferedSpdyFramer::CreateHeaders(
403 SpdyStreamId stream_id, 403 SpdyStreamId stream_id,
404 SpdyControlFlags flags, 404 SpdyControlFlags flags,
405 SpdyPriority priority, 405 SpdyPriority priority,
406 const SpdyHeaderBlock* headers) { 406 const SpdyHeaderBlock* headers) {
407 SpdyHeadersIR headers_ir(stream_id); 407 SpdyHeadersIR headers_ir(stream_id);
408 headers_ir.set_fin((flags & CONTROL_FLAG_FIN) != 0); 408 headers_ir.set_fin((flags & CONTROL_FLAG_FIN) != 0);
409 if (flags & HEADERS_FLAG_PRIORITY) { 409 if (flags & HEADERS_FLAG_PRIORITY) {
410 headers_ir.set_has_priority(true); 410 headers_ir.set_has_priority(true);
411 headers_ir.set_priority(priority); 411 headers_ir.set_priority(priority);
412 } 412 }
413 headers_ir.set_header_block(*headers); 413 headers_ir.set_header_block(*headers);
414 return spdy_framer_.SerializeHeaders(headers_ir); 414 return new SpdySerializedFrame(spdy_framer_.SerializeHeaders(headers_ir));
415 } 415 }
416 416
417 // TODO(jgraettinger): Eliminate uses of this method (prefer 417 // TODO(jgraettinger): Eliminate uses of this method (prefer
418 // SpdyWindowUpdateIR). 418 // SpdyWindowUpdateIR).
419 SpdyFrame* BufferedSpdyFramer::CreateWindowUpdate( 419 SpdySerializedFrame* BufferedSpdyFramer::CreateWindowUpdate(
420 SpdyStreamId stream_id, 420 SpdyStreamId stream_id,
421 uint32_t delta_window_size) const { 421 uint32_t delta_window_size) const {
422 SpdyWindowUpdateIR update_ir(stream_id, delta_window_size); 422 SpdyWindowUpdateIR update_ir(stream_id, delta_window_size);
423 return spdy_framer_.SerializeWindowUpdate(update_ir); 423 return new SpdySerializedFrame(spdy_framer_.SerializeWindowUpdate(update_ir));
424 } 424 }
425 425
426 // TODO(jgraettinger): Eliminate uses of this method (prefer SpdyDataIR). 426 // TODO(jgraettinger): Eliminate uses of this method (prefer SpdyDataIR).
427 SpdyFrame* BufferedSpdyFramer::CreateDataFrame(SpdyStreamId stream_id, 427 SpdySerializedFrame* BufferedSpdyFramer::CreateDataFrame(SpdyStreamId stream_id,
428 const char* data, 428 const char* data,
429 uint32_t len, 429 uint32_t len,
430 SpdyDataFlags flags) { 430 SpdyDataFlags flags) {
431 SpdyDataIR data_ir(stream_id, 431 SpdyDataIR data_ir(stream_id,
432 base::StringPiece(data, len)); 432 base::StringPiece(data, len));
433 data_ir.set_fin((flags & DATA_FLAG_FIN) != 0); 433 data_ir.set_fin((flags & DATA_FLAG_FIN) != 0);
434 return spdy_framer_.SerializeData(data_ir); 434 return new SpdySerializedFrame(spdy_framer_.SerializeData(data_ir));
435 } 435 }
436 436
437 // TODO(jgraettinger): Eliminate uses of this method (prefer SpdyPushPromiseIR). 437 // TODO(jgraettinger): Eliminate uses of this method (prefer SpdyPushPromiseIR).
438 SpdyFrame* BufferedSpdyFramer::CreatePushPromise( 438 SpdySerializedFrame* BufferedSpdyFramer::CreatePushPromise(
439 SpdyStreamId stream_id, 439 SpdyStreamId stream_id,
440 SpdyStreamId promised_stream_id, 440 SpdyStreamId promised_stream_id,
441 const SpdyHeaderBlock* headers) { 441 const SpdyHeaderBlock* headers) {
442 SpdyPushPromiseIR push_promise_ir(stream_id, promised_stream_id); 442 SpdyPushPromiseIR push_promise_ir(stream_id, promised_stream_id);
443 push_promise_ir.set_header_block(*headers); 443 push_promise_ir.set_header_block(*headers);
444 return spdy_framer_.SerializePushPromise(push_promise_ir); 444 return new SpdySerializedFrame(
445 spdy_framer_.SerializePushPromise(push_promise_ir));
445 } 446 }
446 447
447 SpdyPriority BufferedSpdyFramer::GetHighestPriority() const { 448 SpdyPriority BufferedSpdyFramer::GetHighestPriority() const {
448 return spdy_framer_.GetHighestPriority(); 449 return spdy_framer_.GetHighestPriority();
449 } 450 }
450 451
451 void BufferedSpdyFramer::InitHeaderStreaming(SpdyStreamId stream_id) { 452 void BufferedSpdyFramer::InitHeaderStreaming(SpdyStreamId stream_id) {
452 header_buffer_.clear(); 453 header_buffer_.clear();
453 header_buffer_valid_ = true; 454 header_buffer_valid_ = true;
454 header_stream_id_ = stream_id; 455 header_stream_id_ = stream_id;
455 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream); 456 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream);
456 } 457 }
457 458
458 } // namespace net 459 } // 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