diff options
Diffstat (limited to 'net/base/io_buffer.cc')
-rw-r--r-- | net/base/io_buffer.cc | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/net/base/io_buffer.cc b/net/base/io_buffer.cc index 9ad0570..b922733 100644 --- a/net/base/io_buffer.cc +++ b/net/base/io_buffer.cc @@ -8,17 +8,81 @@ namespace net { +IOBuffer::IOBuffer() + : data_(NULL) { +} + IOBuffer::IOBuffer(int buffer_size) { DCHECK(buffer_size > 0); data_ = new char[buffer_size]; } +IOBuffer::IOBuffer(char* data) + : data_(data) { +} + +IOBuffer::~IOBuffer() { + delete[] data_; +} + +IOBufferWithSize::IOBufferWithSize(int size) + : IOBuffer(size), + size_(size) { +} + +StringIOBuffer::StringIOBuffer(const std::string& s) + : IOBuffer(static_cast<char*>(NULL)), + string_data_(s) { + data_ = const_cast<char*>(string_data_.data()); +} + +StringIOBuffer::~StringIOBuffer() { + // We haven't allocated the buffer, so remove it before the base class + // destructor tries to delete[] it. + data_ = NULL; +} + +DrainableIOBuffer::DrainableIOBuffer(IOBuffer* base, int size) + : IOBuffer(base->data()), + base_(base), + size_(size), + used_(0) { +} + +DrainableIOBuffer::~DrainableIOBuffer() { + // The buffer is owned by the |base_| instance. + data_ = NULL; +} + +void DrainableIOBuffer::DidConsume(int bytes) { + SetOffset(used_ + bytes); +} + +int DrainableIOBuffer::BytesRemaining() const { + return size_ - used_; +} + +// Returns the number of consumed bytes. +int DrainableIOBuffer::BytesConsumed() const { + return used_; +} + void DrainableIOBuffer::SetOffset(int bytes) { DCHECK(bytes >= 0 && bytes <= size_); used_ = bytes; data_ = base_->data() + used_; } +GrowableIOBuffer::GrowableIOBuffer() + : IOBuffer(), + capacity_(0), + offset_(0) { +} + +GrowableIOBuffer::~GrowableIOBuffer() { + data_ = NULL; +} + void GrowableIOBuffer::SetCapacity(int capacity) { DCHECK(capacity >= 0); // realloc will crash if it fails. @@ -36,4 +100,29 @@ void GrowableIOBuffer::set_offset(int offset) { data_ = real_data_.get() + offset; } +int GrowableIOBuffer::RemainingCapacity() { + return capacity_ - offset_; +} + +char* GrowableIOBuffer::StartOfBuffer() { + return real_data_.get(); +} + +PickledIOBuffer::PickledIOBuffer() : IOBuffer() {} + +PickledIOBuffer::~PickledIOBuffer() { data_ = NULL; } + +void PickledIOBuffer::Done() { + data_ = const_cast<char*>(static_cast<const char*>(pickle_.data())); +} + + +WrappedIOBuffer::WrappedIOBuffer(const char* data) + : IOBuffer(const_cast<char*>(data)) { +} + +WrappedIOBuffer::~WrappedIOBuffer() { + data_ = NULL; +} + } // namespace net |