MCPcopy Create free account
hub / github.com/ceph/ceph / encode_n

Method encode_n

src/test/test_denc.cc:669–689  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

667unsigned Legacy::n_decode = 0;
668
669bufferlist Legacy::encode_n(unsigned n, const vector<unsigned>& segments) {
670 vector<Legacy> v;
671 for (unsigned i = 0; i < n; i++) {
672 v.push_back(Legacy());
673 }
674 bufferlist bl(n * sizeof(uint8_t));
675 using ceph::encode;
676 encode(v, bl);
677 bufferlist segmented;
678 auto p = bl.begin();
679
680 auto sum = std::accumulate(segments.begin(), segments.end(), 0u);
681 ceph_assert(sum != 0u);
682 for (auto i : segments) {
683 buffer::ptr seg;
684 p.copy_deep(bl.length() * i / sum, seg);
685 segmented.push_back(seg);
686 }
687 p.copy_all(segmented);
688 return segmented;
689}
690
691TEST(denc, no_copy_if_segmented_and_lengthy)
692{

Callers

nothing calls this directly

Calls 8

LegacyClass · 0.85
copy_deepMethod · 0.80
copy_allMethod · 0.80
encodeFunction · 0.50
push_backMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
lengthMethod · 0.45

Tested by

no test coverage detected