bl.last_p = bl.begin();
}
- void buffer::list::claim_prepend(list& bl, unsigned int flags)
- {
- // steal the other guy's buffers
- _len += bl._len;
- if (!(flags & CLAIM_ALLOW_NONSHAREABLE))
- bl.make_shareable();
- _buffers.splice(_buffers.begin(), bl._buffers );
- bl._len = 0;
- bl.last_p = bl.begin();
- // we modified _buffers
- last_p = begin();
- }
-
void buffer::list::claim_append_piecewise(list& bl)
{
// steal the other guy's buffers
EXPECT_EQ((unsigned)0, from.length());
}
-TEST(BufferList, claim_prepend) {
- bufferlist from;
- {
- bufferptr ptr(2);
- from.append(ptr);
- }
- bufferlist to;
- {
- bufferptr ptr(4);
- to.append(ptr);
- }
- EXPECT_EQ((unsigned)4, to.length());
- EXPECT_EQ((unsigned)1, to.get_num_buffers());
- to.claim_prepend(from);
- EXPECT_EQ((unsigned)(2 + 4), to.length());
- EXPECT_EQ((unsigned)2, to.front().length());
- EXPECT_EQ((unsigned)4, to.back().length());
- EXPECT_EQ((unsigned)2, to.get_num_buffers());
- EXPECT_EQ((unsigned)0, from.get_num_buffers());
- EXPECT_EQ((unsigned)0, from.length());
-}
-
-TEST(BufferList, claim_prepend_misc) {
- bufferlist src_buf;
- bufferlist dest_buf;
-
- bufferlist b1;
- b1.append("12345", 5);
- bufferlist b2;
- b2.append("123456", 6);
- bufferlist b3;
- b3.append("1234567", 7);
-
- EXPECT_EQ(5u, b1.length());
- EXPECT_EQ(6u, b2.length());
- EXPECT_EQ(7u, b3.length());
- src_buf.claim_append(b1);
- src_buf.claim_append(b2);
- EXPECT_EQ((unsigned)(5+6), src_buf.length());
- src_buf.splice(0, 3);
- EXPECT_EQ((unsigned)(5-3), src_buf.front().length());
- EXPECT_EQ((unsigned)(11-3), src_buf.length());
- src_buf.claim_prepend(b3);
- EXPECT_EQ((unsigned)(8+7), src_buf.length());
- EXPECT_EQ(0u, b3.get_num_buffers());
- EXPECT_EQ(0u, b3.length());
- src_buf.copy(0, src_buf.length(), dest_buf);
- EXPECT_EQ(3u, dest_buf.get_num_buffers());
-}
-
TEST(BufferList, claim_append_piecewise) {
bufferlist bl, t, dst;
auto a = bl.get_page_aligned_appender(4);