Are there plans to document bufferlist? One of the hardest parts of figuring out how to use libradospp for me was figuring out bufferlist. On Mon, Aug 27, 2012 at 4:01 PM, Sage Weil <sage@xxxxxxxxxxx> wrote: > > On Mon, 27 Aug 2012, Gregory Farnum wrote: > >> On Mon, Aug 27, 2012 at 1:01 PM, Sage Weil <sage@xxxxxxxxxxx> wrote: >> > On Mon, 27 Aug 2012, Noah Watkins wrote: >> >> I have a bufferlist use case that I can't quite resolve. I'm packing >> >> up a struct and a blob, but not sure how to seek to the beginning of >> >> the blob correctly during decode: >> >> >> >> 1. Setup bufferlist >> >> >> >> /* add header */ >> >> struct header hdr; >> >> ::encode(hdr, bl); >> >> >> >> /* add payload blob */ >> >> bl.append(buf, len); >> > >> > Instead, do >> > >> > bufferlist b; >> > b.append(buf, len); >> > ::encode(b, bl); >> > >> > that'll include a length in front of it... >> > >> > >> >> 2. Later in decode ... >> >> >> >> /* get header */ >> >> bufferlist::iterator it = in.begin(); >> >> ::decode(hdr, it); >> >> >> >> **problem: Want to get a bufferlist for the payload, which is >> >> presumably exactly where the iterator now points. How should that >> >> transformation happen with zero-copy? >> > >> > and then >> > >> > bufferlist b; >> > ::decode(b, it); >> > >> > will get it back. >> >> Does that maintain zero-copy semantics? (It could; I just wasn't aware >> that we'd special-cased bufferlist decodes enough to do so.) > > It does. This basic approach is used all over the place. You really have > to go out of your way to make bufferlists copy data. > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html