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

Unified Diff: net/spdy/spdy_stream.cc

Issue 15936003: [SPDY] Refactor SpdyStream::Delegate (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 7 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_stream.cc
diff --git a/net/spdy/spdy_stream.cc b/net/spdy/spdy_stream.cc
index 4470dfc3d70d6c04ac88fd29582189d2dda6c427..7db3b8c375d66a1fa4543403475886cc3703741d 100644
--- a/net/spdy/spdy_stream.cc
+++ b/net/spdy/spdy_stream.cc
@@ -144,7 +144,7 @@ void SpdyStream::PushedStreamReplayData() {
// TODO(akalin): This call may delete this object. Figure out what
// to do in that case.
- int rv = delegate_->OnResponseReceived(*response_, response_time_, OK);
+ int rv = delegate_->OnResponseHeadersReceived(*response_, response_time_, OK);
if (rv == ERR_INCOMPLETE_SPDY_HEADERS) {
// We don't have complete headers. Assume we're waiting for another
// HEADERS frame. Since we don't have headers, we had better not have
@@ -368,7 +368,7 @@ void SpdyStream::SetRequestTime(base::Time t) {
request_time_ = t;
}
-int SpdyStream::OnResponseReceived(const SpdyHeaderBlock& response) {
+int SpdyStream::OnResponseHeadersReceived(const SpdyHeaderBlock& response) {
int rv = OK;
metrics_.StartStream();
@@ -406,10 +406,11 @@ int SpdyStream::OnResponseReceived(const SpdyHeaderBlock& response) {
if (delegate_) {
// May delete this object.
- rv = delegate_->OnResponseReceived(*response_, response_time_, rv);
+ rv = delegate_->OnResponseHeadersReceived(*response_, response_time_, rv);
}
- // If delegate_ is not yet attached, we'll call OnResponseReceived after the
- // delegate gets attached to the stream.
+ // If delegate_ is not yet attached, we'll call
+ // OnResponseHeadersReceived after the delegate gets attached to the
+ // stream.
return rv;
}
@@ -446,7 +447,7 @@ int SpdyStream::OnHeaders(const SpdyHeaderBlock& headers) {
int rv = OK;
if (delegate_) {
// May delete this object.
- rv = delegate_->OnResponseReceived(*response_, response_time_, rv);
+ rv = delegate_->OnResponseHeadersReceived(*response_, response_time_, rv);
// ERR_INCOMPLETE_SPDY_HEADERS means that we are waiting for more
// headers before the response header block is complete.
if (rv == ERR_INCOMPLETE_SPDY_HEADERS)
@@ -576,9 +577,9 @@ int SpdyStream::SendRequestHeaders(scoped_ptr<SpdyHeaderBlock> headers,
return DoLoop(OK);
}
-void SpdyStream::SendStreamData(IOBuffer* data,
- int length,
- SpdySendStatus send_status) {
+void SpdyStream::SendData(IOBuffer* data,
+ int length,
+ SpdySendStatus send_status) {
CHECK_NE(type_, SPDY_PUSH_STREAM);
CHECK_EQ(send_status_, MORE_DATA_TO_SEND);
CHECK_GE(io_state_, STATE_SEND_BODY);
@@ -667,6 +668,9 @@ int SpdyStream::DoLoop(int result) {
CHECK_EQ(result, OK);
result = DoSendRequestHeadersComplete();
break;
+ // TODO(akalin): Remove the states STATE_SEND_BODY through
+ // STATE_WAITING_FOR_RESPONSE; we can infer correct behavior
+ // from |type_| and |send_status_|.
case STATE_SEND_BODY:
CHECK_EQ(result, OK);
result = DoSendBody();
@@ -681,7 +685,7 @@ int SpdyStream::DoLoop(int result) {
result = ERR_IO_PENDING;
break;
// State machine 2: connection is established.
- // In STATE_OPEN, OnResponseReceived has already been called.
+ // In STATE_OPEN, OnResponseHeadersReceived has already been called.
// OnDataReceived, OnClose and OnFrameWriteComplete can be called.
// Only OnFrameWriteComplete calls DoLoop().
//
@@ -816,8 +820,6 @@ int SpdyStream::DoSendRequestHeadersComplete() {
if (!delegate_)
return ERR_UNEXPECTED;
- delegate_->OnSendRequestHeadersComplete();
-
switch (type_) {
case SPDY_BIDIRECTIONAL_STREAM:
DCHECK_EQ(send_status_, MORE_DATA_TO_SEND);
@@ -837,6 +839,8 @@ int SpdyStream::DoSendRequestHeadersComplete() {
return ERR_UNEXPECTED;
}
+ delegate_->OnRequestHeadersSent();
+
return OK;
}
@@ -845,8 +849,6 @@ int SpdyStream::DoSendRequestHeadersComplete() {
int SpdyStream::DoSendBody() {
DCHECK_NE(type_, SPDY_PUSH_STREAM);
io_state_ = STATE_SEND_BODY_COMPLETE;
- CHECK(delegate_);
- delegate_->OnSendBody();
return ERR_IO_PENDING;
}
@@ -857,12 +859,12 @@ int SpdyStream::DoSendBodyComplete(int result) {
if (result != OK)
return result;
- delegate_->OnSendBodyComplete();
-
io_state_ =
(send_status_ == MORE_DATA_TO_SEND) ?
STATE_SEND_BODY : STATE_WAITING_FOR_RESPONSE;
+ delegate_->OnDataSent();
+
return OK;
}

Powered by Google App Engine
This is Rietveld 408576698