From: Greg Farnum Date: Fri, 26 Apr 2019 05:22:22 +0000 (-0700) Subject: osd: make watch_item_t dencoder-compatible X-Git-Tag: v15.1.0~2796^2~4 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=447e04cbbe991f42967a4a1e58851a2cb8f6aed6;p=ceph-ci.git osd: make watch_item_t dencoder-compatible Signed-off-by: Greg Farnum --- diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 8fb2fdfff39..6b0a3ced15c 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -5624,6 +5624,35 @@ struct watch_item_t { } DECODE_FINISH(bl); } + void dump_bare(ceph::Formatter *f) const { + f->dump_stream("watcher") << name; + f->dump_int("cookie", cookie); + f->dump_int("timeout", timeout_seconds); + f->open_object_section("addr"); + addr.dump(f); + f->close_section(); + } + void dump(ceph::Formatter *f) const { + f->open_object_section("watch_item_t"); + dump_bare(f); + f->close_section(); + } + static void generate_test_instances(std::list& o) { + entity_addr_t ea; + ea.set_type(entity_addr_t::TYPE_LEGACY); + ea.set_nonce(1000); + ea.set_family(AF_INET); + ea.set_in4_quad(0, 127); + ea.set_in4_quad(1, 0); + ea.set_in4_quad(2, 0); + ea.set_in4_quad(3, 1); + ea.set_port(1024); + o.push_back(new watch_item_t(entity_name_t(entity_name_t::TYPE_CLIENT, 1), 10, 30, ea)); + ea.set_nonce(1001); + ea.set_in4_quad(3, 2); + ea.set_port(1025); + o.push_back(new watch_item_t(entity_name_t(entity_name_t::TYPE_CLIENT, 2), 20, 60, ea)); + } }; WRITE_CLASS_ENCODER_FEATURES(watch_item_t) @@ -5653,12 +5682,7 @@ struct obj_list_watch_response_t { f->open_array_section("entries"); for (std::list::const_iterator p = entries.begin(); p != entries.end(); ++p) { f->open_object_section("watch"); - f->dump_stream("watcher") << p->name; - f->dump_int("cookie", p->cookie); - f->dump_int("timeout", p->timeout_seconds); - f->open_object_section("addr"); - p->addr.dump(f); - f->close_section(); + p->dump_bare(f); f->close_section(); } f->close_section(); @@ -5667,19 +5691,12 @@ struct obj_list_watch_response_t { entity_addr_t ea; o.push_back(new obj_list_watch_response_t); o.push_back(new obj_list_watch_response_t); - ea.set_type(entity_addr_t::TYPE_LEGACY); - ea.set_nonce(1000); - ea.set_family(AF_INET); - ea.set_in4_quad(0, 127); - ea.set_in4_quad(1, 0); - ea.set_in4_quad(2, 0); - ea.set_in4_quad(3, 1); - ea.set_port(1024); - o.back()->entries.push_back(watch_item_t(entity_name_t(entity_name_t::TYPE_CLIENT, 1), 10, 30, ea)); - ea.set_nonce(1001); - ea.set_in4_quad(3, 2); - ea.set_port(1025); - o.back()->entries.push_back(watch_item_t(entity_name_t(entity_name_t::TYPE_CLIENT, 2), 20, 60, ea)); + std::list test_watchers; + watch_item_t::generate_test_instances(test_watchers); + for (auto &e : test_watchers) { + o.back()->entries.push_back(*e); + delete e; + } } }; WRITE_CLASS_ENCODER_FEATURES(obj_list_watch_response_t)