From: Sage Weil Date: Mon, 17 Nov 2014 17:45:55 +0000 (-0800) Subject: encoding: multiset encode/decode X-Git-Tag: v0.91~90 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=32043a38395aef0f2a16ca929f7a496ea6770737;p=ceph.git encoding: multiset encode/decode Signed-off-by: Sage Weil --- diff --git a/src/include/encoding.h b/src/include/encoding.h index d19b60e9eeae..ff4584c86d31 100644 --- a/src/include/encoding.h +++ b/src/include/encoding.h @@ -448,6 +448,28 @@ inline void decode(std::set& s, bufferlist::iterator& p) } } +// multiset +template +inline void encode(const std::multiset& s, bufferlist& bl) +{ + __u32 n = (__u32)(s.size()); + encode(n, bl); + for (typename std::multiset::const_iterator p = s.begin(); p != s.end(); ++p) + encode(*p, bl); +} +template +inline void decode(std::multiset& s, bufferlist::iterator& p) +{ + __u32 n; + decode(n, p); + s.clear(); + while (n--) { + T v; + decode(v, p); + s.insert(v); + } +} + // vector (pointers) /*template inline void encode(const std::vector& v, bufferlist& bl)