]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/admin: use tell_result_t(unique_ptr<Formatter>) 36960/head
authorKefu Chai <kchai@redhat.com>
Thu, 3 Sep 2020 04:12:07 +0000 (12:12 +0800)
committerKefu Chai <kchai@redhat.com>
Thu, 3 Sep 2020 04:15:26 +0000 (12:15 +0800)
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 <kchai@redhat.com>
src/crimson/admin/admin_socket.cc
src/crimson/admin/admin_socket.h
src/crimson/admin/osd_admin.cc

index 2913298d0d5808f3ab97e1a271b9e19960fd7ba0..13782ac7e37cd3fb2f2d72ca82cace8d4bcd4009 100644 (file)
@@ -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)
 {
   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<tell_result_t>(f.get());
+    return seastar::make_ready_future<tell_result_t>(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<tell_result_t>(f.get());
+    return seastar::make_ready_future<tell_result_t>(std::move(f));
   }
 };
 
@@ -349,7 +349,7 @@ class HelpHook final : public AdminSocketHook {
        }
       }
       f->close_section();
-      return seastar::make_ready_future<tell_result_t>(f.get());
+      return seastar::make_ready_future<tell_result_t>(std::move(f));
     });
   }
 };
@@ -380,7 +380,7 @@ class GetdescsHook final : public AdminSocketHook {
         cmdnum++;
       }
       f->close_section();
-      return seastar::make_ready_future<tell_result_t>(f.get());
+      return seastar::make_ready_future<tell_result_t>(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<tell_result_t>(f.get());
+    return seastar::make_ready_future<tell_result_t>(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<tell_result_t>(f.get());
+    return seastar::make_ready_future<tell_result_t>(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<tell_result_t>(f.get());
+      return seastar::make_ready_future<tell_result_t>(std::move(f));
     }).handle_exception_type([](std::invalid_argument& e) {
       return seastar::make_ready_future<tell_result_t>(
         tell_result_t{-EINVAL, e.what()});
index f2c10621ea712c05500ad3f5ce2d9704f152cd93..0beee751c0babc5a418770e3c4df7bbd86d7d74f 100644 (file)
@@ -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> formatter);
 };
 
 /**
index cdb01f9ba43a807164416f64189839452ae42f78..ce6b6695d2892bb5fb79afbbcdb7f3c1ef558e4d 100644 (file)
@@ -47,7 +47,7 @@ public:
     f->open_object_section("status");
     osd.dump_status(f.get());
     f->close_section();
-    return seastar::make_ready_future<tell_result_t>(f.get());
+    return seastar::make_ready_future<tell_result_t>(std::move(f));
   }
 private:
   const crimson::osd::OSD& osd;
@@ -98,7 +98,7 @@ public:
     uint64_t seq = osd.send_pg_stats();
     unique_ptr<Formatter> f{Formatter::create(format, "json-pretty", "json-pretty")};
     f->dump_unsigned("stat_seq", seq);
-    return seastar::make_ready_future<tell_result_t>(tell_result_t(f.get()));
+    return seastar::make_ready_future<tell_result_t>(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<tell_result_t>(f.get());
+    return seastar::make_ready_future<tell_result_t>(std::move(f));
   }
 private:
   const crimson::osd::OSD& osd;
@@ -183,7 +183,7 @@ public:
      }
    }
    f->close_section();
-   return seastar::make_ready_future<tell_result_t>(f.get());
+   return seastar::make_ready_future<tell_result_t>(std::move(f));
  }
 };
 template std::unique_ptr<AdminSocketHook> make_asok_hook<SeastarMetricsHook>();