diff options
author | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-24 01:54:05 +0000 |
---|---|---|
committer | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-24 01:54:05 +0000 |
commit | 1f8859ad6ec7ea807c0330ddf5559e13be5fb26c (patch) | |
tree | 68887107d0d40f1b22c7a7a07ccd9d7e4caf157a /net/base/io_buffer.h | |
parent | 13dc122db24457653d57ff07791043d518eb05e7 (diff) | |
download | chromium_src-1f8859ad6ec7ea807c0330ddf5559e13be5fb26c.zip chromium_src-1f8859ad6ec7ea807c0330ddf5559e13be5fb26c.tar.gz chromium_src-1f8859ad6ec7ea807c0330ddf5559e13be5fb26c.tar.bz2 |
Change URLRequest to use a ref-counted buffer for actual IO.The ref-counting will prevent the deletion / reuse of memorywhile the buffer is actually being used by pending IO.This seems a very intrusive change, but at least we will be ableto make sure that it works without having to chase every singledestruction of an URLRequest to make sure that any pending IOwas cancelled, and also allows us to avoid blocking onthe object destruction.BUG=5325
Review URL: http://codereview.chromium.org/18390
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8603 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/io_buffer.h')
-rw-r--r-- | net/base/io_buffer.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/net/base/io_buffer.h b/net/base/io_buffer.h new file mode 100644 index 0000000..b390103 --- /dev/null +++ b/net/base/io_buffer.h @@ -0,0 +1,32 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef NET_BASE_IO_BUFFER_H_ +#define NET_BASE_IO_BUFFER_H_ + +#include "base/ref_counted.h" + +namespace net { + +// This is a simple wrapper around a buffer that provides ref counting for +// easier asynchronous IO handling. +class IOBuffer : public base::RefCountedThreadSafe<IOBuffer> { + public: + explicit IOBuffer(int buffer_size) { + data_ = new char[buffer_size]; + } + explicit IOBuffer(char* buffer) : data_(buffer) {} + virtual ~IOBuffer() { + delete[] data_; + } + + char* data() { return data_; } + + protected: + char* data_; +}; + +} // namespace net + +#endif // NET_BASE_IO_BUFFER_H_ |