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

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

Issue 848006: Generalize the net module's LoadLog facility from a passive container, to an event stream (NetLog). (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Split up RequestTracker into ConnectJobTracker+RequestTracker+RequestTrackerBase, address comments Created 10 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « net/spdy/spdy_stream.h ('k') | net/url_request/request_tracker.h » ('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 "net/http/http_request_info.h" 9 #include "net/http/http_request_info.h"
10 #include "net/http/http_response_info.h" 10 #include "net/http/http_response_info.h"
11 #include "net/spdy/spdy_session.h" 11 #include "net/spdy/spdy_session.h"
12 12
13 namespace net { 13 namespace net {
14 14
15 SpdyStream::SpdyStream(SpdySession* session, spdy::SpdyStreamId stream_id, 15 SpdyStream::SpdyStream(SpdySession* session, spdy::SpdyStreamId stream_id,
16 bool pushed, LoadLog* log) 16 bool pushed, const BoundNetLog& log)
17 : stream_id_(stream_id), 17 : stream_id_(stream_id),
18 priority_(0), 18 priority_(0),
19 pushed_(pushed), 19 pushed_(pushed),
20 download_finished_(false), 20 download_finished_(false),
21 metrics_(Singleton<BandwidthMetrics>::get()), 21 metrics_(Singleton<BandwidthMetrics>::get()),
22 session_(session), 22 session_(session),
23 response_(NULL), 23 response_(NULL),
24 request_body_stream_(NULL), 24 request_body_stream_(NULL),
25 response_complete_(false), 25 response_complete_(false),
26 io_state_(STATE_NONE), 26 io_state_(STATE_NONE),
27 response_status_(OK), 27 response_status_(OK),
28 user_callback_(NULL), 28 user_callback_(NULL),
29 user_buffer_(NULL), 29 user_buffer_(NULL),
30 user_buffer_len_(0), 30 user_buffer_len_(0),
31 cancelled_(false), 31 cancelled_(false),
32 load_log_(log), 32 net_log_(log),
33 send_bytes_(0), 33 send_bytes_(0),
34 recv_bytes_(0), 34 recv_bytes_(0),
35 histograms_recorded_(false), 35 histograms_recorded_(false),
36 buffered_read_callback_pending_(false), 36 buffered_read_callback_pending_(false),
37 more_read_data_pending_(false) {} 37 more_read_data_pending_(false) {}
38 38
39 SpdyStream::~SpdyStream() { 39 SpdyStream::~SpdyStream() {
40 DLOG(INFO) << "Deleting SpdyStream for stream " << stream_id_; 40 DLOG(INFO) << "Deleting SpdyStream for stream " << stream_id_;
41 41
42 // TODO(willchan): We're still calling CancelStream() too many times, because 42 // TODO(willchan): We're still calling CancelStream() too many times, because
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 } 271 }
272 272
273 int SpdyStream::DoLoop(int result) { 273 int SpdyStream::DoLoop(int result) {
274 do { 274 do {
275 State state = io_state_; 275 State state = io_state_;
276 io_state_ = STATE_NONE; 276 io_state_ = STATE_NONE;
277 switch (state) { 277 switch (state) {
278 // State machine 1: Send headers and wait for response headers. 278 // State machine 1: Send headers and wait for response headers.
279 case STATE_SEND_HEADERS: 279 case STATE_SEND_HEADERS:
280 CHECK_EQ(OK, result); 280 CHECK_EQ(OK, result);
281 LoadLog::BeginEvent(load_log_, 281 net_log_.BeginEvent(NetLog::TYPE_SPDY_STREAM_SEND_HEADERS);
282 LoadLog::TYPE_SPDY_STREAM_SEND_HEADERS);
283 result = DoSendHeaders(); 282 result = DoSendHeaders();
284 break; 283 break;
285 case STATE_SEND_HEADERS_COMPLETE: 284 case STATE_SEND_HEADERS_COMPLETE:
286 LoadLog::EndEvent(load_log_, 285 net_log_.EndEvent(NetLog::TYPE_SPDY_STREAM_SEND_HEADERS);
287 LoadLog::TYPE_SPDY_STREAM_SEND_HEADERS);
288 result = DoSendHeadersComplete(result); 286 result = DoSendHeadersComplete(result);
289 break; 287 break;
290 case STATE_SEND_BODY: 288 case STATE_SEND_BODY:
291 CHECK_EQ(OK, result); 289 CHECK_EQ(OK, result);
292 LoadLog::BeginEvent(load_log_, 290 net_log_.BeginEvent(NetLog::TYPE_SPDY_STREAM_SEND_BODY);
293 LoadLog::TYPE_SPDY_STREAM_SEND_BODY);
294 result = DoSendBody(); 291 result = DoSendBody();
295 break; 292 break;
296 case STATE_SEND_BODY_COMPLETE: 293 case STATE_SEND_BODY_COMPLETE:
297 LoadLog::EndEvent(load_log_, 294 net_log_.EndEvent(NetLog::TYPE_SPDY_STREAM_SEND_BODY);
298 LoadLog::TYPE_SPDY_STREAM_SEND_BODY);
299 result = DoSendBodyComplete(result); 295 result = DoSendBodyComplete(result);
300 break; 296 break;
301 case STATE_READ_HEADERS: 297 case STATE_READ_HEADERS:
302 CHECK_EQ(OK, result); 298 CHECK_EQ(OK, result);
303 LoadLog::BeginEvent(load_log_, 299 net_log_.BeginEvent(NetLog::TYPE_SPDY_STREAM_READ_HEADERS);
304 LoadLog::TYPE_SPDY_STREAM_READ_HEADERS);
305 result = DoReadHeaders(); 300 result = DoReadHeaders();
306 break; 301 break;
307 case STATE_READ_HEADERS_COMPLETE: 302 case STATE_READ_HEADERS_COMPLETE:
308 LoadLog::EndEvent(load_log_, 303 net_log_.EndEvent(NetLog::TYPE_SPDY_STREAM_READ_HEADERS);
309 LoadLog::TYPE_SPDY_STREAM_READ_HEADERS);
310 result = DoReadHeadersComplete(result); 304 result = DoReadHeadersComplete(result);
311 break; 305 break;
312 306
313 // State machine 2: Read body. 307 // State machine 2: Read body.
314 // NOTE(willchan): Currently unused. Currently we handle this stuff in 308 // NOTE(willchan): Currently unused. Currently we handle this stuff in
315 // the OnDataReceived()/OnClose()/ReadResponseHeaders()/etc. Only reason 309 // the OnDataReceived()/OnClose()/ReadResponseHeaders()/etc. Only reason
316 // to do this is for consistency with the Http code. 310 // to do this is for consistency with the Http code.
317 case STATE_READ_BODY: 311 case STATE_READ_BODY:
318 LoadLog::BeginEvent(load_log_, 312 net_log_.BeginEvent(NetLog::TYPE_SPDY_STREAM_READ_BODY);
319 LoadLog::TYPE_SPDY_STREAM_READ_BODY);
320 result = DoReadBody(); 313 result = DoReadBody();
321 break; 314 break;
322 case STATE_READ_BODY_COMPLETE: 315 case STATE_READ_BODY_COMPLETE:
323 LoadLog::EndEvent(load_log_, 316 net_log_.EndEvent(NetLog::TYPE_SPDY_STREAM_READ_BODY);
324 LoadLog::TYPE_SPDY_STREAM_READ_BODY);
325 result = DoReadBodyComplete(result); 317 result = DoReadBodyComplete(result);
326 break; 318 break;
327 case STATE_DONE: 319 case STATE_DONE:
328 DCHECK(result != ERR_IO_PENDING); 320 DCHECK(result != ERR_IO_PENDING);
329 break; 321 break;
330 default: 322 default:
331 NOTREACHED(); 323 NOTREACHED();
332 break; 324 break;
333 } 325 }
334 } while (result != ERR_IO_PENDING && io_state_ != STATE_NONE); 326 } while (result != ERR_IO_PENDING && io_state_ != STATE_NONE);
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 UMA_HISTOGRAM_TIMES("Net.SpdyStreamDownloadTime", 491 UMA_HISTOGRAM_TIMES("Net.SpdyStreamDownloadTime",
500 recv_last_byte_time_ - recv_first_byte_time_); 492 recv_last_byte_time_ - recv_first_byte_time_);
501 UMA_HISTOGRAM_TIMES("Net.SpdyStreamTime", 493 UMA_HISTOGRAM_TIMES("Net.SpdyStreamTime",
502 recv_last_byte_time_ - send_time_); 494 recv_last_byte_time_ - send_time_);
503 495
504 UMA_HISTOGRAM_COUNTS("Net.SpdySendBytes", send_bytes_); 496 UMA_HISTOGRAM_COUNTS("Net.SpdySendBytes", send_bytes_);
505 UMA_HISTOGRAM_COUNTS("Net.SpdyRecvBytes", recv_bytes_); 497 UMA_HISTOGRAM_COUNTS("Net.SpdyRecvBytes", recv_bytes_);
506 } 498 }
507 499
508 } // namespace net 500 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_stream.h ('k') | net/url_request/request_tracker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698