]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-dencoder: ScrubMap[::object]
authorSage Weil <sage@newdream.net>
Mon, 6 Feb 2012 21:29:23 +0000 (13:29 -0800)
committerSage Weil <sage@newdream.net>
Mon, 6 Feb 2012 21:34:55 +0000 (13:34 -0800)
Signed-off-by: Sage Weil <sage@newdream.net>
src/osd/osd_types.cc
src/osd/osd_types.h
src/test/encoding/types.h

index 1abfeebbe7c44060783c6c52e192a200a5452b42..854b6c4bbc3b35860c55cceaaa57a204385e3bbb 100644 (file)
@@ -1906,6 +1906,90 @@ void ScrubMap::decode(bufferlist::iterator& bl)
   ::decode(incr_since, bl);
 }
 
+void ScrubMap::dump(Formatter *f) const
+{
+  f->dump_stream("valid_through") << valid_through;
+  f->dump_stream("incremental_since") << incr_since;
+  f->open_array_section("attrs");
+  for (map<string,bufferptr>::const_iterator p = attrs.begin(); p != attrs.end(); ++p) {
+    f->open_object_section("attr");
+    f->dump_string("name", p->first);
+    f->dump_int("length", p->second.length());
+    f->close_section();
+  }
+  f->close_section();
+  f->open_array_section("objects");
+  for (map<hobject_t,object>::const_iterator p = objects.begin(); p != objects.end(); ++p) {
+    f->open_object_section("object");
+    f->dump_string("name", p->first.oid.name);
+    f->dump_unsigned("hash", p->first.hash);
+    f->dump_string("key", p->first.get_key());
+    f->dump_int("snapid", p->first.snap);
+    p->second.dump(f);
+    f->close_section();
+  }
+  f->close_section();
+}
+
+void ScrubMap::generate_test_instances(list<ScrubMap*>& o)
+{
+  o.push_back(new ScrubMap);
+  o.push_back(new ScrubMap);
+  o.back()->valid_through = eversion_t(1, 2);
+  o.back()->incr_since = eversion_t(3, 4);
+  o.back()->attrs["foo"] = buffer::copy("foo", 3);
+  o.back()->attrs["bar"] = buffer::copy("barval", 6);
+  list<object*> obj;
+  object::generate_test_instances(obj);
+  o.back()->objects[hobject_t(object_t("foo"), "fookey", 123, 456)] = *obj.back();
+  obj.pop_back();
+  o.back()->objects[hobject_t(object_t("bar"), string(), 123, 456)] = *obj.back();
+}
+
+// -- ScrubMap::object --
+
+void ScrubMap::object::encode(bufferlist& bl) const
+{
+  __u8 struct_v = 1;
+  ::encode(struct_v, bl);
+  ::encode(size, bl);
+  ::encode(negative, bl);
+  ::encode(attrs, bl);
+}
+
+void ScrubMap::object::decode(bufferlist::iterator& bl)
+{
+  __u8 struct_v;
+  ::decode(struct_v, bl);
+  ::decode(size, bl);
+  ::decode(negative, bl);
+  ::decode(attrs, bl);
+}
+
+void ScrubMap::object::dump(Formatter *f) const
+{
+  f->dump_int("size", size);
+  f->dump_int("negative", negative);
+  f->open_array_section("attrs");
+  for (map<string,bufferptr>::const_iterator p = attrs.begin(); p != attrs.end(); ++p) {
+    f->open_object_section("attr");
+    f->dump_string("name", p->first);
+    f->dump_int("length", p->second.length());
+    f->close_section();
+  }
+  f->close_section();
+}
+
+void ScrubMap::object::generate_test_instances(list<object*>& o)
+{
+  o.push_back(new object);
+  o.push_back(new object);
+  o.back()->negative = true;
+  o.push_back(new object);
+  o.back()->size = 123;
+  o.back()->attrs["foo"] = buffer::copy("foo", 3);
+  o.back()->attrs["bar"] = buffer::copy("barval", 6);
+}
 
 // -- OSDOp --
 
index 1a009eca9c0b8925634865fc47c93bb7026e4f9f..549abad0fc26de45b9ca21a858619ed0edca06ee 100644 (file)
@@ -1527,20 +1527,10 @@ struct ScrubMap {
 
     object(): size(0),negative(0),attrs() {}
 
-    void encode(bufferlist& bl) const {
-      __u8 struct_v = 1;
-      ::encode(struct_v, bl);
-      ::encode(size, bl);
-      ::encode(negative, bl);
-      ::encode(attrs, bl);
-    }
-    void decode(bufferlist::iterator& bl) {
-      __u8 struct_v;
-      ::decode(struct_v, bl);
-      ::decode(size, bl);
-      ::decode(negative, bl);
-      ::decode(attrs, bl);
-    }
+    void encode(bufferlist& bl) const;
+    void decode(bufferlist::iterator& bl);
+    void dump(Formatter *f) const;
+    static void generate_test_instances(list<object*>& o);
   };
   WRITE_CLASS_ENCODER(object)
 
@@ -1554,6 +1544,8 @@ struct ScrubMap {
 
   void encode(bufferlist& bl) const;
   void decode(bufferlist::iterator& bl);
+  void dump(Formatter *f) const;
+  static void generate_test_instances(list<ScrubMap*>& o);
 };
 WRITE_CLASS_ENCODER(ScrubMap::object)
 WRITE_CLASS_ENCODER(ScrubMap)
index 28fa947977a10d351e496f6198ee8c565b220841..2c064b7836527aa87ae5ffd1a818dd45e2e36494 100644 (file)
@@ -42,6 +42,8 @@ TYPE(pg_ls_response_t)
 TYPE(watch_info_t)
 TYPE(object_info_t)
 TYPE(SnapSet)
+TYPE(ScrubMap::object)
+TYPE(ScrubMap)
 
 #include "os/ObjectStore.h"
 TYPE(ObjectStore::Transaction)