Index: net/spdy/spdy_session.h |
=================================================================== |
--- net/spdy/spdy_session.h (revision 180447) |
+++ 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; |
+ |
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. |