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

Unified Diff: net/spdy/spdy_session.h

Issue 11644088: SPDY - implement greedy approach to read all the data and process it (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
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.
« no previous file with comments | « net/net.gyp ('k') | net/spdy/spdy_session.cc » ('j') | net/spdy/spdy_session.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698