| 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;
|
| +
|
| 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();
|
| @@ -609,7 +625,6 @@
|
|
|
| // The read buffer used to read data from the socket.
|
| scoped_refptr<IOBuffer> read_buffer_;
|
| - bool read_pending_;
|
|
|
| int stream_hi_water_mark_; // The next stream id to use.
|
|
|
| @@ -672,7 +687,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.
|
|
|