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

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

Issue 4291001: Convert implicit scoped_refptr constructor calls to explicit ones, part 2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/build
Patch Set: comments Created 10 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « net/spdy/spdy_session_pool.cc ('k') | net/url_request/url_request.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) 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_stream.h" 5 #include "net/spdy/spdy_stream.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/singleton.h" 9 #include "base/singleton.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 delegate_(NULL), 53 delegate_(NULL),
54 request_time_(base::Time::Now()), 54 request_time_(base::Time::Now()),
55 response_(new spdy::SpdyHeaderBlock), 55 response_(new spdy::SpdyHeaderBlock),
56 io_state_(STATE_NONE), 56 io_state_(STATE_NONE),
57 response_status_(OK), 57 response_status_(OK),
58 cancelled_(false), 58 cancelled_(false),
59 has_upload_data_(false), 59 has_upload_data_(false),
60 net_log_(net_log), 60 net_log_(net_log),
61 send_bytes_(0), 61 send_bytes_(0),
62 recv_bytes_(0) { 62 recv_bytes_(0) {
63 net_log_.BeginEvent(NetLog::TYPE_SPDY_STREAM, 63 net_log_.BeginEvent(
64 new NetLogIntegerParameter("stream_id", stream_id_)); 64 NetLog::TYPE_SPDY_STREAM,
65 make_scoped_refptr(new NetLogIntegerParameter("stream_id", stream_id_)));
65 } 66 }
66 67
67 SpdyStream::~SpdyStream() { 68 SpdyStream::~SpdyStream() {
68 UpdateHistograms(); 69 UpdateHistograms();
69 net_log_.EndEvent(NetLog::TYPE_SPDY_STREAM, NULL); 70 net_log_.EndEvent(NetLog::TYPE_SPDY_STREAM, NULL);
70 } 71 }
71 72
72 void SpdyStream::SetDelegate(Delegate* delegate) { 73 void SpdyStream::SetDelegate(Delegate* delegate) {
73 CHECK(delegate); 74 CHECK(delegate);
74 delegate_ = delegate; 75 delegate_ = delegate;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 LOG(WARNING) << "Received WINDOW_UPDATE [delta:" << delta_window_size 142 LOG(WARNING) << "Received WINDOW_UPDATE [delta:" << delta_window_size
142 << "] for stream " << stream_id_ 143 << "] for stream " << stream_id_
143 << " overflows send_window_size_ [current:" 144 << " overflows send_window_size_ [current:"
144 << send_window_size_ << "]"; 145 << send_window_size_ << "]";
145 session_->ResetStream(stream_id_, spdy::FLOW_CONTROL_ERROR); 146 session_->ResetStream(stream_id_, spdy::FLOW_CONTROL_ERROR);
146 return; 147 return;
147 } 148 }
148 149
149 send_window_size_ = new_window_size; 150 send_window_size_ = new_window_size;
150 151
151 net_log_.AddEvent(NetLog::TYPE_SPDY_STREAM_SEND_WINDOW_UPDATE, 152 net_log_.AddEvent(
152 new NetLogSpdyStreamWindowUpdateParameter(stream_id_, 153 NetLog::TYPE_SPDY_STREAM_SEND_WINDOW_UPDATE,
153 delta_window_size, send_window_size_)); 154 make_scoped_refptr(new NetLogSpdyStreamWindowUpdateParameter(
155 stream_id_, delta_window_size, send_window_size_)));
154 if (stalled_by_flow_control_) { 156 if (stalled_by_flow_control_) {
155 stalled_by_flow_control_ = false; 157 stalled_by_flow_control_ = false;
156 io_state_ = STATE_SEND_BODY; 158 io_state_ = STATE_SEND_BODY;
157 DoLoop(OK); 159 DoLoop(OK);
158 } 160 }
159 } 161 }
160 162
161 void SpdyStream::DecreaseSendWindowSize(int delta_window_size) { 163 void SpdyStream::DecreaseSendWindowSize(int delta_window_size) {
162 // we only call this method when sending a frame, therefore 164 // we only call this method when sending a frame, therefore
163 // |delta_window_size| should be within the valid frame size range. 165 // |delta_window_size| should be within the valid frame size range.
164 DCHECK_GE(delta_window_size, 1); 166 DCHECK_GE(delta_window_size, 1);
165 DCHECK_LE(delta_window_size, kMaxSpdyFrameChunkSize); 167 DCHECK_LE(delta_window_size, kMaxSpdyFrameChunkSize);
166 168
167 // |send_window_size_| should have been at least |delta_window_size| for 169 // |send_window_size_| should have been at least |delta_window_size| for
168 // this call to happen. 170 // this call to happen.
169 DCHECK_GE(send_window_size_, delta_window_size); 171 DCHECK_GE(send_window_size_, delta_window_size);
170 172
171 send_window_size_ -= delta_window_size; 173 send_window_size_ -= delta_window_size;
172 174
173 net_log_.AddEvent(NetLog::TYPE_SPDY_STREAM_SEND_WINDOW_UPDATE, 175 net_log_.AddEvent(
174 new NetLogSpdyStreamWindowUpdateParameter(stream_id_, 176 NetLog::TYPE_SPDY_STREAM_SEND_WINDOW_UPDATE,
175 -delta_window_size, send_window_size_)); 177 make_scoped_refptr(new NetLogSpdyStreamWindowUpdateParameter(
178 stream_id_, -delta_window_size, send_window_size_)));
176 } 179 }
177 180
178 void SpdyStream::IncreaseRecvWindowSize(int delta_window_size) { 181 void SpdyStream::IncreaseRecvWindowSize(int delta_window_size) {
179 DCHECK_GE(delta_window_size, 1); 182 DCHECK_GE(delta_window_size, 1);
180 // By the time a read is isued, stream may become inactive. 183 // By the time a read is isued, stream may become inactive.
181 if (!session_->IsStreamActive(stream_id_)) 184 if (!session_->IsStreamActive(stream_id_))
182 return; 185 return;
183 int new_window_size = recv_window_size_ + delta_window_size; 186 int new_window_size = recv_window_size_ + delta_window_size;
184 if (recv_window_size_ > 0) 187 if (recv_window_size_ > 0)
185 DCHECK(new_window_size > 0); 188 DCHECK(new_window_size > 0);
186 189
187 recv_window_size_ = new_window_size; 190 recv_window_size_ = new_window_size;
188 net_log_.AddEvent(NetLog::TYPE_SPDY_STREAM_RECV_WINDOW_UPDATE, 191 net_log_.AddEvent(
189 new NetLogSpdyStreamWindowUpdateParameter(stream_id_, 192 NetLog::TYPE_SPDY_STREAM_RECV_WINDOW_UPDATE,
190 delta_window_size, recv_window_size_)); 193 make_scoped_refptr(new NetLogSpdyStreamWindowUpdateParameter(
194 stream_id_, delta_window_size, recv_window_size_)));
191 session_->SendWindowUpdate(stream_id_, delta_window_size); 195 session_->SendWindowUpdate(stream_id_, delta_window_size);
192 } 196 }
193 197
194 void SpdyStream::DecreaseRecvWindowSize(int delta_window_size) { 198 void SpdyStream::DecreaseRecvWindowSize(int delta_window_size) {
195 DCHECK_GE(delta_window_size, 1); 199 DCHECK_GE(delta_window_size, 1);
196 200
197 recv_window_size_ -= delta_window_size; 201 recv_window_size_ -= delta_window_size;
198 net_log_.AddEvent(NetLog::TYPE_SPDY_STREAM_RECV_WINDOW_UPDATE, 202 net_log_.AddEvent(
199 new NetLogSpdyStreamWindowUpdateParameter(stream_id_, 203 NetLog::TYPE_SPDY_STREAM_RECV_WINDOW_UPDATE,
200 -delta_window_size, recv_window_size_)); 204 make_scoped_refptr(new NetLogSpdyStreamWindowUpdateParameter(
205 stream_id_, -delta_window_size, recv_window_size_)));
201 206
202 // Since we never decrease the initial window size, we should never hit 207 // Since we never decrease the initial window size, we should never hit
203 // a negative |recv_window_size_|, if we do, it's a flow-control violation. 208 // a negative |recv_window_size_|, if we do, it's a flow-control violation.
204 if (recv_window_size_ < 0) 209 if (recv_window_size_ < 0)
205 session_->ResetStream(stream_id_, spdy::FLOW_CONTROL_ERROR); 210 session_->ResetStream(stream_id_, spdy::FLOW_CONTROL_ERROR);
206 } 211 }
207 212
208 int SpdyStream::GetPeerAddress(AddressList* address) const { 213 int SpdyStream::GetPeerAddress(AddressList* address) const {
209 return session_->GetPeerAddress(address); 214 return session_->GetPeerAddress(address);
210 } 215 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 255
251 void SpdyStream::OnDataReceived(const char* data, int length) { 256 void SpdyStream::OnDataReceived(const char* data, int length) {
252 DCHECK_GE(length, 0); 257 DCHECK_GE(length, 0);
253 258
254 if (!delegate_ || continue_buffering_data_) { 259 if (!delegate_ || continue_buffering_data_) {
255 // It should be valid for this to happen in the server push case. 260 // It should be valid for this to happen in the server push case.
256 // We'll return received data when delegate gets attached to the stream. 261 // We'll return received data when delegate gets attached to the stream.
257 if (length > 0) { 262 if (length > 0) {
258 IOBufferWithSize* buf = new IOBufferWithSize(length); 263 IOBufferWithSize* buf = new IOBufferWithSize(length);
259 memcpy(buf->data(), data, length); 264 memcpy(buf->data(), data, length);
260 pending_buffers_.push_back(buf); 265 pending_buffers_.push_back(make_scoped_refptr(buf));
261 } else { 266 } else {
262 pending_buffers_.push_back(NULL); 267 pending_buffers_.push_back(NULL);
263 metrics_.StopStream(); 268 metrics_.StopStream();
264 // Note: we leave the stream open in the session until the stream 269 // Note: we leave the stream open in the session until the stream
265 // is claimed. 270 // is claimed.
266 } 271 }
267 return; 272 return;
268 } 273 }
269 274
270 CHECK(!closed()); 275 CHECK(!closed());
(...skipping 20 matching lines...) Expand all
291 // Track our bandwidth. 296 // Track our bandwidth.
292 metrics_.RecordBytes(length); 297 metrics_.RecordBytes(length);
293 recv_bytes_ += length; 298 recv_bytes_ += length;
294 recv_last_byte_time_ = base::TimeTicks::Now(); 299 recv_last_byte_time_ = base::TimeTicks::Now();
295 300
296 if (!delegate_) { 301 if (!delegate_) {
297 // It should be valid for this to happen in the server push case. 302 // It should be valid for this to happen in the server push case.
298 // We'll return received data when delegate gets attached to the stream. 303 // We'll return received data when delegate gets attached to the stream.
299 IOBufferWithSize* buf = new IOBufferWithSize(length); 304 IOBufferWithSize* buf = new IOBufferWithSize(length);
300 memcpy(buf->data(), data, length); 305 memcpy(buf->data(), data, length);
301 pending_buffers_.push_back(buf); 306 pending_buffers_.push_back(make_scoped_refptr(buf));
302 return; 307 return;
303 } 308 }
304 309
305 delegate_->OnDataReceived(data, length); 310 delegate_->OnDataReceived(data, length);
306 } 311 }
307 312
308 // This function is only called when an entire frame is written. 313 // This function is only called when an entire frame is written.
309 void SpdyStream::OnWriteComplete(int bytes) { 314 void SpdyStream::OnWriteComplete(int bytes) {
310 DCHECK_LE(0, bytes); 315 DCHECK_LE(0, bytes);
311 send_bytes_ += bytes; 316 send_bytes_ += bytes;
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 UMA_HISTOGRAM_TIMES("Net.SpdyStreamDownloadTime", 510 UMA_HISTOGRAM_TIMES("Net.SpdyStreamDownloadTime",
506 recv_last_byte_time_ - recv_first_byte_time_); 511 recv_last_byte_time_ - recv_first_byte_time_);
507 UMA_HISTOGRAM_TIMES("Net.SpdyStreamTime", 512 UMA_HISTOGRAM_TIMES("Net.SpdyStreamTime",
508 recv_last_byte_time_ - send_time_); 513 recv_last_byte_time_ - send_time_);
509 514
510 UMA_HISTOGRAM_COUNTS("Net.SpdySendBytes", send_bytes_); 515 UMA_HISTOGRAM_COUNTS("Net.SpdySendBytes", send_bytes_);
511 UMA_HISTOGRAM_COUNTS("Net.SpdyRecvBytes", recv_bytes_); 516 UMA_HISTOGRAM_COUNTS("Net.SpdyRecvBytes", recv_bytes_);
512 } 517 }
513 518
514 } // namespace net 519 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_session_pool.cc ('k') | net/url_request/url_request.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698