unsigned gap = append_buffer.unused_tail_length();
if (!gap) {
// make a new append_buffer!
- unsigned alen = CEPH_PAGE_SIZE;
- append_buffer = create_page_aligned(alen);
+ append_buffer = create_aligned(CEPH_BUFFER_APPEND_SIZE, CEPH_BUFFER_APPEND_SIZE);
append_buffer.set_length(0); // unused, so far.
}
- append_buffer.append(c);
- append(append_buffer, append_buffer.end() - 1, 1); // add segment to the list
+ append(append_buffer, append_buffer.append(c) - 1, 1); // add segment to the list
}
-
+
void buffer::list::append(const char *data, unsigned len)
{
while (len > 0) {
// put what we can into the existing append_buffer.
unsigned gap = append_buffer.unused_tail_length();
if (gap > 0) {
- if (gap > len) gap = len;
- //cout << "append first char is " << data[0] << ", last char is " << data[len-1] << std::endl;
- append_buffer.append(data, gap);
- append(append_buffer, append_buffer.end() - gap, gap); // add segment to the list
- len -= gap;
- data += gap;
+ if (gap > len) gap = len;
+ //cout << "append first char is " << data[0] << ", last char is " << data[len-1] << std::endl;
+ append_buffer.append(data, gap);
+ append(append_buffer, append_buffer.end() - gap, gap); // add segment to the list
+ len -= gap;
+ data += gap;
}
if (len == 0)
- break; // done!
+ break; // done!
// make a new append_buffer!
- unsigned alen = CEPH_PAGE_SIZE * (((len-1) / CEPH_PAGE_SIZE) + 1);
- append_buffer = create_page_aligned(alen);
+ unsigned alen = CEPH_BUFFER_APPEND_SIZE * (((len-1) / CEPH_BUFFER_APPEND_SIZE) + 1);
+ append_buffer = create_aligned(alen, CEPH_BUFFER_APPEND_SIZE);
append_buffer.set_length(0); // unused, so far.
}
}