| Index: net/base/io_buffer.h
|
| ===================================================================
|
| --- net/base/io_buffer.h (revision 18456)
|
| +++ net/base/io_buffer.h (working copy)
|
| @@ -28,15 +28,50 @@
|
| char* data_;
|
| };
|
|
|
| +// This version stores the size of the buffer so that the creator of the object
|
| +// doesn't have to keep track of that value.
|
| +// NOTE: This doesn't mean that we want to stop sending the size as an explictit
|
| +// argument to IO functions. Please keep using IOBuffer* for API declarations.
|
| +class IOBufferWithSize : public IOBuffer {
|
| + public:
|
| + explicit IOBufferWithSize(int size) : IOBuffer(size), size_(size) {}
|
| + ~IOBufferWithSize() {}
|
| +
|
| + int size() const { return size_; }
|
| +
|
| + private:
|
| + int size_;
|
| +};
|
| +
|
| +// This version allows the caller to do multiple IO operations reusing a given
|
| +// IOBuffer. We don't own data_, we simply make it point to the buffer of the
|
| +// passed in IOBuffer, plus the desired offset.
|
| +class ReusedIOBuffer : public IOBuffer {
|
| + public:
|
| + ReusedIOBuffer(IOBuffer* base, int size)
|
| + : IOBuffer(base->data()), base_(base), size_(size) {}
|
| + ~ReusedIOBuffer() {
|
| + // We don't really own a buffer.
|
| + data_ = NULL;
|
| + }
|
| +
|
| + int size() const { return size_; }
|
| + void SetOffset(int offset);
|
| +
|
| + private:
|
| + scoped_refptr<IOBuffer> base_;
|
| + int size_;
|
| +};
|
| +
|
| // This class allows the creation of a temporary IOBuffer that doesn't really
|
| // own the underlying buffer. Please use this class only as a last resort.
|
| // A good example is the buffer for a synchronous operation, where we can be
|
| // sure that nobody is keeping an extra reference to this object so the lifetime
|
| // of the buffer can be completely managed by its intended owner.
|
| -class WrappedIOBuffer : public net::IOBuffer {
|
| +class WrappedIOBuffer : public IOBuffer {
|
| public:
|
| explicit WrappedIOBuffer(const char* data)
|
| - : net::IOBuffer(const_cast<char*>(data)) {}
|
| + : IOBuffer(const_cast<char*>(data)) {}
|
| ~WrappedIOBuffer() {
|
| data_ = NULL;
|
| }
|
|
|