diff options
author | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-29 00:30:47 +0000 |
---|---|---|
committer | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-29 00:30:47 +0000 |
commit | 9dea9e1fea04be579e34c634cb3be1b6654ef506 (patch) | |
tree | 6615f05d4b92199300d63cb5f2203ca7345e2cff /net/base/completion_callback.h | |
parent | d615ad7ae65beddc26c9833b7bfd1d7bdb6f3d7b (diff) | |
download | chromium_src-9dea9e1fea04be579e34c634cb3be1b6654ef506.zip chromium_src-9dea9e1fea04be579e34c634cb3be1b6654ef506.tar.gz chromium_src-9dea9e1fea04be579e34c634cb3be1b6654ef506.tar.bz2 |
Change URLRequest to use a ref-counted buffer for actual IO.
This will re-land http://codereview.chromium.org/18390
BUG=5325
Review URL: http://codereview.chromium.org/19004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8847 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/completion_callback.h')
-rw-r--r-- | net/base/completion_callback.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/net/base/completion_callback.h b/net/base/completion_callback.h index 4013f71..f9bb233 100644 --- a/net/base/completion_callback.h +++ b/net/base/completion_callback.h @@ -6,6 +6,7 @@ #define NET_BASE_COMPLETION_CALLBACK_H__ #include "base/task.h" +#include "net/base/io_buffer.h" namespace net { @@ -41,8 +42,23 @@ class CancelableCompletionCallback : is_canceled_ = true; } + // Attaches the given buffer to this callback so it is valid until the + // operation completes. TODO(rvargas): This is a temporal fix for bug 5325 + // while I send IOBuffer to the lower layers of code. + void UseBuffer(net::IOBuffer* buffer) { + DCHECK(!buffer_.get()); + buffer_ = buffer; + } + + // The callback is not expected anymore so release the buffer. + void ReleaseBuffer() { + DCHECK(buffer_.get()); + buffer_ = NULL; + } + virtual void RunWithParams(const Tuple1<int>& params) { if (is_canceled_) { + CancelableCompletionCallback<T>::ReleaseBuffer(); base::RefCounted<CancelableCompletionCallback<T> >::Release(); } else { CompletionCallbackImpl<T>::RunWithParams(params); @@ -50,6 +66,7 @@ class CancelableCompletionCallback : } private: + scoped_refptr<net::IOBuffer> buffer_; bool is_canceled_; }; |