diff options
author | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-10 23:40:27 +0000 |
---|---|---|
committer | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-10 23:40:27 +0000 |
commit | c12519fb92c4e6ae39b20376badc19c825d62d2c (patch) | |
tree | 659e1f599702c63ef54dcf4c262ea1995fc01b20 /net/base/completion_callback.h | |
parent | 0b9803cdd8e63251ad6485608dc7c00d439c0729 (diff) | |
download | chromium_src-c12519fb92c4e6ae39b20376badc19c825d62d2c.zip chromium_src-c12519fb92c4e6ae39b20376badc19c825d62d2c.tar.gz chromium_src-c12519fb92c4e6ae39b20376badc19c825d62d2c.tar.bz2 |
Revert cl 9528 to fix mac test_shell_tests
Review URL: http://codereview.chromium.org/21236
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9532 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_; }; |