summaryrefslogtreecommitdiffstats
path: root/net/http/http_response_body_drainer.h
diff options
context:
space:
mode:
authorwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-28 16:28:44 +0000
committerwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-28 16:28:44 +0000
commit9b5e46cbcd9b292cb6e7ff59d61dde9426e3bed3 (patch)
tree480b5b99942f44386a469e9ccda0e288c5e576a5 /net/http/http_response_body_drainer.h
parentc1f06d70cb2c39e48877cdef363d16dd6b8d5e64 (diff)
downloadchromium_src-9b5e46cbcd9b292cb6e7ff59d61dde9426e3bed3.zip
chromium_src-9b5e46cbcd9b292cb6e7ff59d61dde9426e3bed3.tar.gz
chromium_src-9b5e46cbcd9b292cb6e7ff59d61dde9426e3bed3.tar.bz2
Kill all HttpResponseBodyDrainers when HttpNetworkSession goes away.
BUG=none TEST=none Review URL: http://codereview.chromium.org/3388022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60798 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http/http_response_body_drainer.h')
-rw-r--r--net/http/http_response_body_drainer.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/net/http/http_response_body_drainer.h b/net/http/http_response_body_drainer.h
index 16a4c88..1aa4e93 100644
--- a/net/http/http_response_body_drainer.h
+++ b/net/http/http_response_body_drainer.h
@@ -11,6 +11,7 @@
#include "base/scoped_ptr.h"
#include "base/timer.h"
#include "net/base/completion_callback.h"
+#include "net/http/http_network_session.h"
namespace net {
@@ -27,10 +28,12 @@ class HttpResponseBodyDrainer {
static const int kTimeoutInSeconds = 5;
explicit HttpResponseBodyDrainer(HttpStream* stream);
+ ~HttpResponseBodyDrainer();
// Starts reading the body until completion, or we hit the buffer limit, or we
- // timeout. After Start(), |this| will eventually delete itself.
- void Start();
+ // timeout. After Start(), |this| will eventually delete itself. If it
+ // doesn't complete immediately, it will add itself to |session|.
+ void Start(HttpNetworkSession* session);
private:
enum State {
@@ -39,8 +42,6 @@ class HttpResponseBodyDrainer {
STATE_NONE,
};
- ~HttpResponseBodyDrainer();
-
int DoLoop(int result);
int DoDrainResponseBody();
@@ -50,13 +51,14 @@ class HttpResponseBodyDrainer {
void OnTimerFired();
void Finish(int result);
+ scoped_refptr<IOBuffer> read_buf_;
const scoped_ptr<HttpStream> stream_;
State next_state_;
- scoped_refptr<IOBuffer> read_buf_;
int total_read_;
CompletionCallbackImpl<HttpResponseBodyDrainer> io_callback_;
CompletionCallback* user_callback_;
base::OneShotTimer<HttpResponseBodyDrainer> timer_;
+ HttpNetworkSession* session_;
DISALLOW_COPY_AND_ASSIGN(HttpResponseBodyDrainer);
};