Index: net/base/io_buffer.cc |
diff --git a/net/base/io_buffer.cc b/net/base/io_buffer.cc |
index b1c72ceb76cf6b8bc6008cc777d7524cf8a46670..004bf0e524303d1677dbe2826ca8e75953e22d44 100644 |
--- a/net/base/io_buffer.cc |
+++ b/net/base/io_buffer.cc |
@@ -83,6 +83,49 @@ DrainableIOBuffer::~DrainableIOBuffer() { |
data_ = NULL; |
} |
+SeekableIOBuffer::SeekableIOBuffer(int size) |
+ : IOBuffer(size), |
+ begin_(data_), |
+ capacity_(size), |
+ size_(0), |
+ used_(0) { |
+} |
+ |
+void SeekableIOBuffer::DidConsume(int bytes) { |
+ SetOffset(used_ + bytes); |
+} |
+ |
+int SeekableIOBuffer::BytesRemaining() const { |
+ return size_ - used_; |
+} |
+ |
+int SeekableIOBuffer::BytesConsumed() const { |
+ return used_; |
+} |
+ |
+void SeekableIOBuffer::SetOffset(int bytes) { |
+ DCHECK_GE(bytes, 0); |
+ DCHECK_LE(bytes, size_); |
+ used_ = bytes; |
+ data_ = begin_ + used_; |
+} |
+ |
+void SeekableIOBuffer::DidAppend(int bytes) { |
+ DCHECK_GE(size_ + bytes, 0); |
+ DCHECK_LE(size_ + bytes, capacity_); |
+ size_ += bytes; |
+} |
+ |
+void SeekableIOBuffer::Clear() { |
+ size_ = 0; |
+ SetOffset(0); |
+} |
+ |
+SeekableIOBuffer::~SeekableIOBuffer() { |
+ // data_ will be deleted in IOBuffer::~IOBuffer(). |
+ data_ = begin_; |
+} |
+ |
GrowableIOBuffer::GrowableIOBuffer() |
: IOBuffer(), |
capacity_(0), |