Index: net/spdy/spdy_http_stream.h |
=================================================================== |
--- net/spdy/spdy_http_stream.h (revision 145922) |
+++ net/spdy/spdy_http_stream.h (working copy) |
@@ -14,6 +14,7 @@ |
#include "base/memory/weak_ptr.h" |
#include "net/base/completion_callback.h" |
#include "net/base/net_log.h" |
+#include "net/base/upload_data.h" |
#include "net/http/http_request_info.h" |
#include "net/http/http_stream.h" |
#include "net/spdy/spdy_protocol.h" |
@@ -31,7 +32,8 @@ |
// The SpdyHttpStream is a HTTP-specific type of stream known to a SpdySession. |
class NET_EXPORT_PRIVATE SpdyHttpStream : public SpdyStream::Delegate, |
- public HttpStream { |
+ public HttpStream, |
+ public ChunkCallback { |
public: |
SpdyHttpStream(SpdySession* spdy_session, bool direct); |
virtual ~SpdyHttpStream(); |
@@ -83,8 +85,10 @@ |
virtual void OnDataReceived(const char* buffer, int bytes) OVERRIDE; |
virtual void OnDataSent(int length) OVERRIDE; |
virtual void OnClose(int status) OVERRIDE; |
- virtual void set_chunk_callback(ChunkCallback* callback) OVERRIDE; |
+ // ChunkCallback implementation. |
+ virtual void OnChunkAvailable() OVERRIDE; |
+ |
private: |
FRIEND_TEST_ALL_PREFIXES(SpdyNetworkTransactionSpdy2Test, |
FlowControlStallResume); |
@@ -95,6 +99,10 @@ |
FRIEND_TEST_ALL_PREFIXES(SpdyNetworkTransactionSpdy3Test, |
FlowControlNegativeSendWindowSize); |
+ // Reads the data (whether chunked or not) from the request body stream and |
+ // sends the data by calling WriteStreamData on the underlying SpdyStream. |
+ int SendData(); |
+ |
// Call the user callback. |
void DoCallback(int rv); |
@@ -147,6 +155,9 @@ |
// Is this spdy stream direct to the origin server (or to a proxy). |
bool direct_; |
+ // Is the connection stalled waiting for an upload data chunk. |
+ bool waiting_for_chunk_; |
+ |
bool send_last_chunk_; |
DISALLOW_COPY_AND_ASSIGN(SpdyHttpStream); |