From: Kefu Chai Date: Thu, 3 Sep 2020 04:12:07 +0000 (+0800) Subject: crimson/admin: use tell_result_t(unique_ptr) X-Git-Tag: v16.1.0~1228^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3772e957d68a7b21cf05b95a63fcd2ccb93b5346;p=ceph.git crimson/admin: use tell_result_t(unique_ptr) to address the comment of > Taking the `Formatter` by pointer was a bit confusing in the matter of > lifetime control. Signed-off-by: Kefu Chai --- diff --git a/src/crimson/admin/admin_socket.cc b/src/crimson/admin/admin_socket.cc index 2913298d0d58..13782ac7e37c 100644 --- a/src/crimson/admin/admin_socket.cc +++ b/src/crimson/admin/admin_socket.cc @@ -37,7 +37,7 @@ tell_result_t::tell_result_t(int ret, std::string&& err, ceph::bufferlist&& out) : ret{ret}, err(std::move(err)), out(std::move(out)) {} -tell_result_t::tell_result_t(Formatter* formatter) +tell_result_t::tell_result_t(std::unique_ptr formatter) { formatter->flush(out); } @@ -301,7 +301,7 @@ class VersionHook final : public AdminSocketHook { f->dump_string("release", ceph_release_to_str()); f->dump_string("release_type", ceph_release_type()); f->close_section(); - return seastar::make_ready_future(f.get()); + return seastar::make_ready_future(std::move(f)); } }; @@ -322,7 +322,7 @@ class GitVersionHook final : public AdminSocketHook { f->open_object_section("version"); f->dump_string("git_version", git_version_to_str()); f->close_section(); - return seastar::make_ready_future(f.get()); + return seastar::make_ready_future(std::move(f)); } }; @@ -349,7 +349,7 @@ class HelpHook final : public AdminSocketHook { } } f->close_section(); - return seastar::make_ready_future(f.get()); + return seastar::make_ready_future(std::move(f)); }); } }; @@ -380,7 +380,7 @@ class GetdescsHook final : public AdminSocketHook { cmdnum++; } f->close_section(); - return seastar::make_ready_future(f.get()); + return seastar::make_ready_future(std::move(f)); }); } }; @@ -428,7 +428,7 @@ public: f->open_object_section("config_show"); local_conf().show_config(f.get()); f->close_section(); - return seastar::make_ready_future(f.get()); + return seastar::make_ready_future(std::move(f)); } }; @@ -461,7 +461,7 @@ public: f->open_object_section("config_get"); f->dump_string(var, conf_val); f->close_section(); - return seastar::make_ready_future(f.get()); + return seastar::make_ready_future(std::move(f)); } }; @@ -492,7 +492,7 @@ public: f->open_object_section("config_set"); f->dump_string("success", ""); f->close_section(); - return seastar::make_ready_future(f.get()); + return seastar::make_ready_future(std::move(f)); }).handle_exception_type([](std::invalid_argument& e) { return seastar::make_ready_future( tell_result_t{-EINVAL, e.what()}); diff --git a/src/crimson/admin/admin_socket.h b/src/crimson/admin/admin_socket.h index f2c10621ea71..0beee751c0ba 100644 --- a/src/crimson/admin/admin_socket.h +++ b/src/crimson/admin/admin_socket.h @@ -44,7 +44,7 @@ struct tell_result_t { * \param formatter the content of formatter will be flushed to the * output buffer */ - tell_result_t(Formatter* formatter); + tell_result_t(std::unique_ptr formatter); }; /** diff --git a/src/crimson/admin/osd_admin.cc b/src/crimson/admin/osd_admin.cc index cdb01f9ba43a..ce6b6695d289 100644 --- a/src/crimson/admin/osd_admin.cc +++ b/src/crimson/admin/osd_admin.cc @@ -47,7 +47,7 @@ public: f->open_object_section("status"); osd.dump_status(f.get()); f->close_section(); - return seastar::make_ready_future(f.get()); + return seastar::make_ready_future(std::move(f)); } private: const crimson::osd::OSD& osd; @@ -98,7 +98,7 @@ public: uint64_t seq = osd.send_pg_stats(); unique_ptr f{Formatter::create(format, "json-pretty", "json-pretty")}; f->dump_unsigned("stat_seq", seq); - return seastar::make_ready_future(tell_result_t(f.get())); + return seastar::make_ready_future(std::move(f)); } private: @@ -125,7 +125,7 @@ public: f->open_object_section("pgstate_history"); osd.dump_pg_state_history(f.get()); f->close_section(); - return seastar::make_ready_future(f.get()); + return seastar::make_ready_future(std::move(f)); } private: const crimson::osd::OSD& osd; @@ -183,7 +183,7 @@ public: } } f->close_section(); - return seastar::make_ready_future(f.get()); + return seastar::make_ready_future(std::move(f)); } }; template std::unique_ptr make_asok_hook();