Chromium Code Reviews| Index: net/spdy/spdy_session.h |
| =================================================================== |
| --- net/spdy/spdy_session.h (revision 180807) |
| +++ net/spdy/spdy_session.h (working copy) |
| @@ -43,6 +43,10 @@ |
| // Specifies the maxiumum concurrent streams server could send (via push). |
| const int kMaxConcurrentPushedStreams = 1000; |
| +// Specifies the number of bytes read synchronously (without yielding) if the |
| +// data is available. |
| +const int kMaxReadBytes = 32 * 1024; |
|
Ryan Sleevi
2013/02/06 23:04:46
I'm not sure I understand why these constants get
ramant (doing other things)
2013/02/07 02:11:07
This is for unit tests.
|
| + |
| class BoundNetLog; |
| struct LoadTimingInfo; |
| class SpdyStream; |
| @@ -265,7 +269,7 @@ |
| void SendWindowUpdate(SpdyStreamId stream_id, int32 delta_window_size); |
| // If session is closed, no new streams/transactions should be created. |
| - bool IsClosed() const { return state_ == CLOSED; } |
| + bool IsClosed() const { return state_ == STATE_CLOSED; } |
| // Closes this session. This will close all active streams and mark |
| // the session as permanently closed. |
| @@ -422,10 +426,11 @@ |
| PendingCallbackMap; |
| enum State { |
| - IDLE, |
| - CONNECTING, |
| - CONNECTED, |
| - CLOSED |
| + STATE_IDLE, |
| + STATE_CONNECTING, |
| + STATE_DO_READ, |
| + STATE_DO_READ_COMPLETE, |
| + STATE_CLOSED |
| }; |
| virtual ~SpdySession(); |
| @@ -437,6 +442,21 @@ |
| scoped_refptr<SpdyStream>* spdy_stream, |
| const BoundNetLog& stream_net_log); |
| + // Start the DoLoop to read data from socket. |
| + void StartRead(); |
| + |
| + // Try to make progress by reading and processing data. |
| + int DoLoop(int result); |
| + // The implementations of STATE_DO_READ/STATE_DO_READ_COMPLETE state changes |
| + // of the state machine. |
| + int DoRead(); |
| + int DoReadComplete(int bytes_read); |
| + |
| + // Check if session is connected or not. |
| + bool IsConnected() const { |
| + return state_ == STATE_DO_READ || state_ == STATE_DO_READ_COMPLETE; |
| + } |
| + |
| // IO Callbacks |
| void OnReadComplete(int result); |
| void OnWriteComplete(int result); |
| @@ -471,10 +491,6 @@ |
| // haven't received any data in |kHungInterval| time period. |
| void CheckPingStatus(base::TimeTicks last_check_time); |
| - // Start reading from the socket. |
| - // Returns OK on success, or an error on failure. |
| - net::Error ReadSocket(); |
| - |
| // Write current data to the socket. |
| void WriteSocketLater(); |
| void WriteSocket(); |
| @@ -672,7 +688,15 @@ |
| int streams_pushed_count_; |
| int streams_pushed_and_claimed_count_; |
| int streams_abandoned_count_; |
| - int bytes_received_; |
| + |
| + // |total_bytes_received_| keeps track of all the bytes read by the |
| + // SpdySession. It is used by the |Net.SpdySettingsCwnd...| histograms. |
| + int total_bytes_received_; |
| + |
| + // |bytes_read_| keeps track of number of bytes read continously in the |
| + // DoLoop() without yielding. |
| + int bytes_read_; |
| + |
| bool sent_settings_; // Did this session send settings when it started. |
| bool received_settings_; // Did this session receive at least one settings |
| // frame. |