| Index: net/base/completion_callback.h
|
| ===================================================================
|
| --- net/base/completion_callback.h (revision 9528)
|
| +++ net/base/completion_callback.h (working copy)
|
| @@ -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 @@
|
| 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 @@
|
| }
|
|
|
| private:
|
| + scoped_refptr<net::IOBuffer> buffer_;
|
| bool is_canceled_;
|
| };
|
|
|
|
|