]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
encoding: multiset encode/decode
authorSage Weil <sage@redhat.com>
Mon, 17 Nov 2014 17:45:55 +0000 (09:45 -0800)
committerSage Weil <sage@redhat.com>
Thu, 4 Dec 2014 18:34:05 +0000 (10:34 -0800)
Signed-off-by: Sage Weil <sage@redhat.com>
src/include/encoding.h

index d19b60e9eeaefbcdc51a59aa6a58f498b4ad0085..ff4584c86d31ea9b9e125deac6c8a0aae0df05c4 100644 (file)
@@ -448,6 +448,28 @@ inline void decode(std::set<T>& s, bufferlist::iterator& p)
   }
 }
 
+// multiset
+template<class T>
+inline void encode(const std::multiset<T>& s, bufferlist& bl)
+{
+  __u32 n = (__u32)(s.size());
+  encode(n, bl);
+  for (typename std::multiset<T>::const_iterator p = s.begin(); p != s.end(); ++p)
+    encode(*p, bl);
+}
+template<class T>
+inline void decode(std::multiset<T>& s, bufferlist::iterator& p)
+{
+  __u32 n;
+  decode(n, p);
+  s.clear();
+  while (n--) {
+    T v;
+    decode(v, p);
+    s.insert(v);
+  }
+}
+
 // vector (pointers)
 /*template<class T>
 inline void encode(const std::vector<T*>& v, bufferlist& bl)