From 36a2245d50595e6f7be5ceec2d9a86055b87bc13 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 2 Oct 2012 14:30:27 -0700 Subject: [PATCH] buffer: add claim_prepend() Steal another bufferlist's content and prepend it to our own. Signed-off-by: Sage Weil --- src/common/buffer.cc | 8 ++++++++ src/include/buffer.h | 1 + 2 files changed, 9 insertions(+) diff --git a/src/common/buffer.cc b/src/common/buffer.cc index 60c36a6f728..b2d3ec6ed8c 100644 --- a/src/common/buffer.cc +++ b/src/common/buffer.cc @@ -826,6 +826,14 @@ void buffer::list::rebuild_page_aligned() bl.last_p = bl.begin(); } + void buffer::list::claim_prepend(list& bl) + { + // steal the other guy's buffers + _len += bl._len; + _buffers.splice( _buffers.begin(), bl._buffers ); + bl._len = 0; + bl.last_p = bl.begin(); + } void buffer::list::copy(unsigned off, unsigned len, char *dest) const { diff --git a/src/include/buffer.h b/src/include/buffer.h index f063c7ca64b..4a9e96c6067 100644 --- a/src/include/buffer.h +++ b/src/include/buffer.h @@ -371,6 +371,7 @@ public: // sort-of-like-assignment-op void claim(list& bl); void claim_append(list& bl); + void claim_prepend(list& bl); iterator begin() { return iterator(this, 0);