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

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

Issue 1668002: SPDY: Minor code cleanup. (Closed)
Patch Set: Created 10 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 | « no previous file | no next file » | 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/spdy_session.h" 5 #include "net/spdy/spdy_session.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/rand_util.h" 10 #include "base/rand_util.h"
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 spdy_framer_.Reset(); 553 spdy_framer_.Reset();
554 } 554 }
555 555
556 if (state_ != CLOSED) 556 if (state_ != CLOSED)
557 ReadSocket(); 557 ReadSocket();
558 } 558 }
559 559
560 void SpdySession::OnWriteComplete(int result) { 560 void SpdySession::OnWriteComplete(int result) {
561 DCHECK(write_pending_); 561 DCHECK(write_pending_);
562 DCHECK(in_flight_write_.size()); 562 DCHECK(in_flight_write_.size());
563 DCHECK(result != 0); // This shouldn't happen for write. 563 DCHECK_NE(result, 0); // This shouldn't happen for write.
564 564
565 write_pending_ = false; 565 write_pending_ = false;
566 566
567 scoped_refptr<SpdyStream> stream = in_flight_write_.stream(); 567 scoped_refptr<SpdyStream> stream = in_flight_write_.stream();
568 568
569 LOG(INFO) << "Spdy write complete (result=" << result << ")" 569 LOG(INFO) << "Spdy write complete (result=" << result << ")"
570 << (stream ? " for stream " + stream->stream_id() : ""); 570 << (stream ? std::string(" for stream ") +
571 IntToString(stream->stream_id()) : "");
571 572
572 if (result >= 0) { 573 if (result >= 0) {
573 // It should not be possible to have written more bytes than our 574 // It should not be possible to have written more bytes than our
574 // in_flight_write_. 575 // in_flight_write_.
575 DCHECK_LE(result, in_flight_write_.buffer()->BytesRemaining()); 576 DCHECK_LE(result, in_flight_write_.buffer()->BytesRemaining());
576 577
577 in_flight_write_.buffer()->DidConsume(result); 578 in_flight_write_.buffer()->DidConsume(result);
578 579
579 // We only notify the stream when we've fully written the pending frame. 580 // We only notify the stream when we've fully written the pending frame.
580 if (!in_flight_write_.buffer()->BytesRemaining()) { 581 if (!in_flight_write_.buffer()->BytesRemaining()) {
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 // again when the socket connection completes. If the socket is 669 // again when the socket connection completes. If the socket is
669 // closed, just return. 670 // closed, just return.
670 if (state_ < CONNECTED || state_ == CLOSED) 671 if (state_ < CONNECTED || state_ == CLOSED)
671 return; 672 return;
672 673
673 if (write_pending_) // Another write is in progress still. 674 if (write_pending_) // Another write is in progress still.
674 return; 675 return;
675 676
676 // Loop sending frames until we've sent everything or until the write 677 // Loop sending frames until we've sent everything or until the write
677 // returns error (or ERR_IO_PENDING). 678 // returns error (or ERR_IO_PENDING).
678 while (in_flight_write_.buffer() || queue_.size()) { 679 while (in_flight_write_.buffer() || !queue_.empty()) {
679 if (!in_flight_write_.buffer()) { 680 if (!in_flight_write_.buffer()) {
680 // Grab the next SpdyFrame to send. 681 // Grab the next SpdyFrame to send.
681 SpdyIOBuffer next_buffer = queue_.top(); 682 SpdyIOBuffer next_buffer = queue_.top();
682 queue_.pop(); 683 queue_.pop();
683 684
684 // We've deferred compression until just before we write it to the socket, 685 // We've deferred compression until just before we write it to the socket,
685 // which is now. At this time, we don't compress our data frames. 686 // which is now. At this time, we don't compress our data frames.
686 spdy::SpdyFrame uncompressed_frame(next_buffer.buffer()->data(), false); 687 spdy::SpdyFrame uncompressed_frame(next_buffer.buffer()->data(), false);
687 size_t size; 688 size_t size;
688 if (spdy_framer_.IsCompressible(&uncompressed_frame)) { 689 if (spdy_framer_.IsCompressible(&uncompressed_frame)) {
689 scoped_ptr<spdy::SpdyFrame> compressed_frame( 690 scoped_ptr<spdy::SpdyFrame> compressed_frame(
690 spdy_framer_.CompressFrame(&uncompressed_frame)); 691 spdy_framer_.CompressFrame(&uncompressed_frame));
691 if (!compressed_frame.get()) { 692 if (!compressed_frame.get()) {
692 LOG(ERROR) << "SPDY Compression failure"; 693 LOG(ERROR) << "SPDY Compression failure";
693 CloseSessionOnError(net::ERR_SPDY_PROTOCOL_ERROR); 694 CloseSessionOnError(net::ERR_SPDY_PROTOCOL_ERROR);
694 return; 695 return;
695 } 696 }
696 697
697 size = compressed_frame->length() + spdy::SpdyFrame::size(); 698 size = compressed_frame->length() + spdy::SpdyFrame::size();
698 699
699 DCHECK(size > 0); 700 DCHECK_GT(size, 0u);
700 701
701 // TODO(mbelshe): We have too much copying of data here. 702 // TODO(mbelshe): We have too much copying of data here.
702 IOBufferWithSize* buffer = new IOBufferWithSize(size); 703 IOBufferWithSize* buffer = new IOBufferWithSize(size);
703 memcpy(buffer->data(), compressed_frame->data(), size); 704 memcpy(buffer->data(), compressed_frame->data(), size);
704 705
705 // Attempt to send the frame. 706 // Attempt to send the frame.
706 in_flight_write_ = SpdyIOBuffer(buffer, size, 0, next_buffer.stream()); 707 in_flight_write_ = SpdyIOBuffer(buffer, size, 0, next_buffer.stream());
707 } else { 708 } else {
708 size = uncompressed_frame.length() + spdy::SpdyFrame::size(); 709 size = uncompressed_frame.length() + spdy::SpdyFrame::size();
709 in_flight_write_ = next_buffer; 710 in_flight_write_ = next_buffer;
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
1123 if (settings.empty()) 1124 if (settings.empty())
1124 return; 1125 return;
1125 1126
1126 // Create the SETTINGS frame and send it. 1127 // Create the SETTINGS frame and send it.
1127 scoped_ptr<spdy::SpdySettingsControlFrame> settings_frame( 1128 scoped_ptr<spdy::SpdySettingsControlFrame> settings_frame(
1128 spdy_framer_.CreateSettings(settings)); 1129 spdy_framer_.CreateSettings(settings));
1129 QueueFrame(settings_frame.get(), 0, NULL); 1130 QueueFrame(settings_frame.get(), 0, NULL);
1130 } 1131 }
1131 1132
1132 } // namespace net 1133 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698