 Chromium Code Reviews
 Chromium Code Reviews Issue 8230037:
  Send PING to check the status of the SPDY connection.  (Closed) 
  Base URL: svn://chrome-svn/chrome/trunk/src/
    
  
    Issue 8230037:
  Send PING to check the status of the SPDY connection.  (Closed) 
  Base URL: svn://chrome-svn/chrome/trunk/src/| OLD | NEW | 
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #ifndef NET_SPDY_SPDY_SESSION_H_ | 5 #ifndef NET_SPDY_SPDY_SESSION_H_ | 
| 6 #define NET_SPDY_SPDY_SESSION_H_ | 6 #define NET_SPDY_SPDY_SESSION_H_ | 
| 7 #pragma once | 7 #pragma once | 
| 8 | 8 | 
| 9 #include <deque> | 9 #include <deque> | 
| 10 #include <list> | 10 #include <list> | 
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 97 bool is_secure, | 97 bool is_secure, | 
| 98 int certificate_error_code); | 98 int certificate_error_code); | 
| 99 | 99 | 
| 100 // Check to see if this SPDY session can support an additional domain. | 100 // Check to see if this SPDY session can support an additional domain. | 
| 101 // If the session is un-authenticated, then this call always returns true. | 101 // If the session is un-authenticated, then this call always returns true. | 
| 102 // For SSL-based sessions, verifies that the certificate in use by this | 102 // For SSL-based sessions, verifies that the certificate in use by this | 
| 103 // session provides authentication for the domain. | 103 // session provides authentication for the domain. | 
| 104 // NOTE: This function can have false negatives on some platforms. | 104 // NOTE: This function can have false negatives on some platforms. | 
| 105 bool VerifyDomainAuthentication(const std::string& domain); | 105 bool VerifyDomainAuthentication(const std::string& domain); | 
| 106 | 106 | 
| 107 // Send the PING frame for |stream_id|. | |
| 108 int WritePingFrame(spdy::SpdyStreamId stream_id); | |
| 109 | |
| 107 // Send the SYN frame for |stream_id|. | 110 // Send the SYN frame for |stream_id|. | 
| 108 int WriteSynStream( | 111 int WriteSynStream( | 
| 109 spdy::SpdyStreamId stream_id, | 112 spdy::SpdyStreamId stream_id, | 
| 110 RequestPriority priority, | 113 RequestPriority priority, | 
| 111 spdy::SpdyControlFlags flags, | 114 spdy::SpdyControlFlags flags, | 
| 112 const linked_ptr<spdy::SpdyHeaderBlock>& headers); | 115 const linked_ptr<spdy::SpdyHeaderBlock>& headers); | 
| 113 | 116 | 
| 114 // Write a data frame to the stream. | 117 // Write a data frame to the stream. | 
| 115 // Used to create and queue a data frame for the given stream. | 118 // Used to create and queue a data frame for the given stream. | 
| 116 int WriteStreamData(spdy::SpdyStreamId stream_id, net::IOBuffer* data, | 119 int WriteStreamData(spdy::SpdyStreamId stream_id, net::IOBuffer* data, | 
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 188 | 191 | 
| 189 void set_spdy_session_pool(SpdySessionPool* pool) { | 192 void set_spdy_session_pool(SpdySessionPool* pool) { | 
| 190 spdy_session_pool_ = NULL; | 193 spdy_session_pool_ = NULL; | 
| 191 } | 194 } | 
| 192 | 195 | 
| 193 // Returns true if session is not currently active | 196 // Returns true if session is not currently active | 
| 194 bool is_active() const { | 197 bool is_active() const { | 
| 195 return !active_streams_.empty(); | 198 return !active_streams_.empty(); | 
| 196 } | 199 } | 
| 197 | 200 | 
| 201 // Returns true if we have received a ping response from server for the ping | |
| 202 // message we had sent. | |
| 203 bool DidLastPingWork() const { | |
| 204 if (sent_ping_) | |
| 
willchan no longer on Chromium
2011/10/12 05:41:06
This isn't good enough, you're going to need to tr
 
ramant (doing other things)
2011/10/13 21:41:14
Done.
 | |
| 205 return received_ping_; | |
| 206 return true; | |
| 207 } | |
| 208 | |
| 198 // Access to the number of active and pending streams. These are primarily | 209 // Access to the number of active and pending streams. These are primarily | 
| 199 // available for testing and diagnostics. | 210 // available for testing and diagnostics. | 
| 200 size_t num_active_streams() const { return active_streams_.size(); } | 211 size_t num_active_streams() const { return active_streams_.size(); } | 
| 201 size_t num_unclaimed_pushed_streams() const { | 212 size_t num_unclaimed_pushed_streams() const { | 
| 202 return unclaimed_pushed_streams_.size(); | 213 return unclaimed_pushed_streams_.size(); | 
| 203 } | 214 } | 
| 204 | 215 | 
| 205 const BoundNetLog& net_log() const { return net_log_; } | 216 const BoundNetLog& net_log() const { return net_log_; } | 
| 206 | 217 | 
| 207 int GetPeerAddress(AddressList* address) const; | 218 int GetPeerAddress(AddressList* address) const; | 
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 264 | 275 | 
| 265 // Control frame handlers. | 276 // Control frame handlers. | 
| 266 void OnSyn(const spdy::SpdySynStreamControlFrame& frame, | 277 void OnSyn(const spdy::SpdySynStreamControlFrame& frame, | 
| 267 const linked_ptr<spdy::SpdyHeaderBlock>& headers); | 278 const linked_ptr<spdy::SpdyHeaderBlock>& headers); | 
| 268 void OnSynReply(const spdy::SpdySynReplyControlFrame& frame, | 279 void OnSynReply(const spdy::SpdySynReplyControlFrame& frame, | 
| 269 const linked_ptr<spdy::SpdyHeaderBlock>& headers); | 280 const linked_ptr<spdy::SpdyHeaderBlock>& headers); | 
| 270 void OnHeaders(const spdy::SpdyHeadersControlFrame& frame, | 281 void OnHeaders(const spdy::SpdyHeadersControlFrame& frame, | 
| 271 const linked_ptr<spdy::SpdyHeaderBlock>& headers); | 282 const linked_ptr<spdy::SpdyHeaderBlock>& headers); | 
| 272 void OnRst(const spdy::SpdyRstStreamControlFrame& frame); | 283 void OnRst(const spdy::SpdyRstStreamControlFrame& frame); | 
| 273 void OnGoAway(const spdy::SpdyGoAwayControlFrame& frame); | 284 void OnGoAway(const spdy::SpdyGoAwayControlFrame& frame); | 
| 285 void OnPing(const spdy::SpdyPingControlFrame& frame); | |
| 274 void OnSettings(const spdy::SpdySettingsControlFrame& frame); | 286 void OnSettings(const spdy::SpdySettingsControlFrame& frame); | 
| 275 void OnWindowUpdate(const spdy::SpdyWindowUpdateControlFrame& frame); | 287 void OnWindowUpdate(const spdy::SpdyWindowUpdateControlFrame& frame); | 
| 276 | 288 | 
| 277 // IO Callbacks | 289 // IO Callbacks | 
| 278 void OnReadComplete(int result); | 290 void OnReadComplete(int result); | 
| 279 void OnWriteComplete(int result); | 291 void OnWriteComplete(int result); | 
| 280 | 292 | 
| 281 // Send relevant SETTINGS. This is generally called on connection setup. | 293 // Send relevant SETTINGS. This is generally called on connection setup. | 
| 282 void SendSettings(); | 294 void SendSettings(); | 
| 283 | 295 | 
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 424 int streams_pushed_count_; | 436 int streams_pushed_count_; | 
| 425 int streams_pushed_and_claimed_count_; | 437 int streams_pushed_and_claimed_count_; | 
| 426 int streams_abandoned_count_; | 438 int streams_abandoned_count_; | 
| 427 int frames_received_; | 439 int frames_received_; | 
| 428 int bytes_received_; | 440 int bytes_received_; | 
| 429 bool sent_settings_; // Did this session send settings when it started. | 441 bool sent_settings_; // Did this session send settings when it started. | 
| 430 bool received_settings_; // Did this session receive at least one settings | 442 bool received_settings_; // Did this session receive at least one settings | 
| 431 // frame. | 443 // frame. | 
| 432 int stalled_streams_; // Count of streams that were ever stalled. | 444 int stalled_streams_; // Count of streams that were ever stalled. | 
| 433 | 445 | 
| 446 bool sent_ping_; // Did this session send a ping message. | |
| 447 bool received_ping_; // Did this session receive a ping message. | |
| 448 | |
| 434 // Initial send window size for the session; can be changed by an | 449 // Initial send window size for the session; can be changed by an | 
| 435 // arriving SETTINGS frame; newly created streams use this value for the | 450 // arriving SETTINGS frame; newly created streams use this value for the | 
| 436 // initial send window size. | 451 // initial send window size. | 
| 437 int initial_send_window_size_; | 452 int initial_send_window_size_; | 
| 438 | 453 | 
| 439 // Initial receive window size for the session; there are plans to add a | 454 // Initial receive window size for the session; there are plans to add a | 
| 440 // command line switch that would cause a SETTINGS frame with window size | 455 // command line switch that would cause a SETTINGS frame with window size | 
| 441 // announcement to be sent on startup; newly created streams will use | 456 // announcement to be sent on startup; newly created streams will use | 
| 442 // this value for the initial receive window size. | 457 // this value for the initial receive window size. | 
| 443 int initial_recv_window_size_; | 458 int initial_recv_window_size_; | 
| (...skipping 28 matching lines...) Expand all Loading... | |
| 472 const spdy::SpdyControlFlags flags_; | 487 const spdy::SpdyControlFlags flags_; | 
| 473 const spdy::SpdyStreamId id_; | 488 const spdy::SpdyStreamId id_; | 
| 474 const spdy::SpdyStreamId associated_stream_; | 489 const spdy::SpdyStreamId associated_stream_; | 
| 475 | 490 | 
| 476 DISALLOW_COPY_AND_ASSIGN(NetLogSpdySynParameter); | 491 DISALLOW_COPY_AND_ASSIGN(NetLogSpdySynParameter); | 
| 477 }; | 492 }; | 
| 478 | 493 | 
| 479 } // namespace net | 494 } // namespace net | 
| 480 | 495 | 
| 481 #endif // NET_SPDY_SPDY_SESSION_H_ | 496 #endif // NET_SPDY_SPDY_SESSION_H_ | 
| OLD | NEW |