summaryrefslogtreecommitdiffstats
path: root/net/spdy/spdy_proxy_client_socket.cc
diff options
context:
space:
mode:
authorakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-15 00:21:42 +0000
committerakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-15 00:21:42 +0000
commitd46715c9e23b6a27a4f3484fa3c2f9e213c8ed14 (patch)
treea0619f483850b39c6bbb34e3e191ef4cb8f35059 /net/spdy/spdy_proxy_client_socket.cc
parentbf97e8bcd8225c395db813ecc0b0ed84194b0d04 (diff)
downloadchromium_src-d46715c9e23b6a27a4f3484fa3c2f9e213c8ed14.zip
chromium_src-d46715c9e23b6a27a4f3484fa3c2f9e213c8ed14.tar.gz
chromium_src-d46715c9e23b6a27a4f3484fa3c2f9e213c8ed14.tar.bz2
[SPDY] Plumb SPDY frame type through write queue
This lets us remove the waiting_completions_ queue from SpdyStream, and also lets us guarantee that a stream is activated only when SYN_STREAM is sent. Change some SpdyStream::Delegate function signatures. Also add SpdySendStatus to replace some booleans. Change SpdyStream::send_bytes_ to only track data frames. Add GetFrame{Min,Max}imumSize() function to SpdyFramer. Fix calculation of frame overhead that is buggy with SPDY/4 and add regression test. BUG=176592,231003 Review URL: https://chromiumcodereview.appspot.com/13977002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@194127 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/spdy/spdy_proxy_client_socket.cc')
-rw-r--r--net/spdy/spdy_proxy_client_socket.cc18
1 files changed, 9 insertions, 9 deletions
diff --git a/net/spdy/spdy_proxy_client_socket.cc b/net/spdy/spdy_proxy_client_socket.cc
index b5b3313..7978d60 100644
--- a/net/spdy/spdy_proxy_client_socket.cc
+++ b/net/spdy/spdy_proxy_client_socket.cc
@@ -477,14 +477,14 @@ int SpdyProxyClientSocket::DoReadReplyComplete(int result) {
// SpdyStream::Delegate methods:
// Called when SYN frame has been sent.
// Returns true if no more data to be sent after SYN frame.
-bool SpdyProxyClientSocket::OnSendHeadersComplete(int status) {
+SpdySendStatus SpdyProxyClientSocket::OnSendHeadersComplete() {
DCHECK_EQ(next_state_, STATE_SEND_REQUEST_COMPLETE);
- OnIOComplete(status);
+ OnIOComplete(OK);
// We return true here so that we send |spdy_stream_| into
// STATE_OPEN (ala WebSockets).
- return true;
+ return NO_MORE_DATA_TO_SEND;
}
int SpdyProxyClientSocket::OnSendBody() {
@@ -494,11 +494,12 @@ int SpdyProxyClientSocket::OnSendBody() {
return ERR_UNEXPECTED;
}
-int SpdyProxyClientSocket::OnSendBodyComplete(int /*status*/, bool* /*eof*/) {
+SpdySendStatus SpdyProxyClientSocket::OnSendBodyComplete(
+ size_t /*bytes_sent*/) {
// Because we use |spdy_stream_| via STATE_OPEN (ala WebSockets)
// OnSendBodyComplete() should never be called.
NOTREACHED();
- return ERR_UNEXPECTED;
+ return NO_MORE_DATA_TO_SEND;
}
int SpdyProxyClientSocket::OnResponseReceived(
@@ -547,12 +548,11 @@ int SpdyProxyClientSocket::OnDataReceived(const char* data, int length) {
return OK;
}
-void SpdyProxyClientSocket::OnDataSent(int length) {
+void SpdyProxyClientSocket::OnDataSent(size_t bytes_sent) {
DCHECK(!write_callback_.is_null());
- write_bytes_outstanding_ -= length;
-
- DCHECK_GE(write_bytes_outstanding_, 0);
+ DCHECK_LE(static_cast<int>(bytes_sent), write_bytes_outstanding_);
+ write_bytes_outstanding_ -= static_cast<int>(bytes_sent);
if (write_bytes_outstanding_ == 0) {
int rv = write_buffer_len_;