]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/DaemonServer: always template the return value
authorKefu Chai <kchai@redhat.com>
Sat, 8 Apr 2017 18:43:44 +0000 (02:43 +0800)
committerKefu Chai <kchai@redhat.com>
Mon, 10 Apr 2017 15:20:16 +0000 (23:20 +0800)
Signed-off-by: Kefu Chai <kchai@redhat.com>
src/mgr/ClusterState.h
src/mgr/DaemonServer.cc
src/mon/MonClient.h

index 4b14d1a7d2528f294dfc8f02a9151758385f24f3..eced72ad90e465483c735495b8a64d4517e0cb93 100644 (file)
@@ -71,11 +71,13 @@ public:
   }
 
   template<typename Callback, typename...Args>
-  void with_pgmap(Callback&& cb, Args&&...args)
+  auto with_pgmap(Callback&& cb, Args&&...args) ->
+    decltype(cb(const_cast<const PGMap&>(pg_map),
+               std::forward<Args>(args)...))
   {
     Mutex::Locker l(lock);
-    std::forward<Callback>(cb)(const_cast<const PGMap&>(pg_map),
-        std::forward<Args>(args)...);
+    return std::forward<Callback>(cb)(const_cast<const PGMap&>(pg_map),
+                                     std::forward<Args>(args)...);
   }
 
   template<typename... Args>
@@ -87,10 +89,11 @@ public:
   }
 
   template<typename... Args>
-  void with_osdmap(Args &&... args)
+  auto with_osdmap(Args &&... args) ->
+    decltype(objecter->with_osdmap(std::forward<Args>(args)...))
   {
     assert(objecter != nullptr);
-    objecter->with_osdmap(std::forward<Args>(args)...);
+    return objecter->with_osdmap(std::forward<Args>(args)...);
   }
 
 };
index 7e73e4357bbc0aad79fe0af19c6adacb1f1ba3e7..24b1d2585dcab6ba1c5ba0bfd975ad2c5e781c5d 100644 (file)
@@ -573,18 +573,17 @@ bool DaemonServer::handle_command(MCommand *m)
     cmd_getval(g_ceph_context, cmdmap, "no_increasing", no_increasing);
     string out_str;
     map<int32_t, uint32_t> new_weights;
-    cluster_state.with_pgmap(
-      [&](const PGMap& pgmap) {
-       cluster_state.with_osdmap([&](const OSDMap& osdmap) {
-           r = reweight::by_utilization(osdmap, pgmap,
-                                        oload,
-                                        max_change,
-                                        max_osds,
-                                        by_pg,
-                                        pools.empty() ? NULL : &pools,
-                                        no_increasing == "--no-increasing",
-                                        &new_weights,
-                                        &ss, &out_str, f.get());
+    r = cluster_state.with_pgmap([&](const PGMap& pgmap) {
+       return cluster_state.with_osdmap([&](const OSDMap& osdmap) {
+           return reweight::by_utilization(osdmap, pgmap,
+                                           oload,
+                                           max_change,
+                                           max_osds,
+                                           by_pg,
+                                           pools.empty() ? NULL : &pools,
+                                           no_increasing == "--no-increasing",
+                                           &new_weights,
+                                           &ss, &out_str, f.get());
          });
       });
     if (r >= 0) {
@@ -620,11 +619,10 @@ bool DaemonServer::handle_command(MCommand *m)
       return true;
     }
   } else {
-    cluster_state.with_pgmap(
-      [&](const PGMap& pg_map) {
-       cluster_state.with_osdmap([&](const OSDMap& osdmap) {
-           r = process_pg_map_command(prefix, cmdmap, pg_map, osdmap,
-                                      f.get(), &ss, &odata);
+    r = cluster_state.with_pgmap([&](const PGMap& pg_map) {
+       return cluster_state.with_osdmap([&](const OSDMap& osdmap) {
+           return process_pg_map_command(prefix, cmdmap, pg_map, osdmap,
+                                         f.get(), &ss, &odata);
          });
       });
   }
index 4361852f4149cfae16d3bc1df334ecb9452cc316..22add022c2a9c62e311f8d54703c4046aa1427a8 100644 (file)
@@ -467,14 +467,11 @@ public:
    */
   template<typename Callback, typename...Args>
   auto with_monmap(Callback&& cb, Args&&...args) ->
-    typename std::enable_if<
-      std::is_void<
     decltype(cb(const_cast<const MonMap&>(monmap),
-               std::forward<Args>(args)...))>::value,
-      void>::type {
+               std::forward<Args>(args)...)) {
     Mutex::Locker l(monc_lock);
-    std::forward<Callback>(cb)(const_cast<const MonMap&>(monmap),
-                              std::forward<Args>(args)...);
+    return std::forward<Callback>(cb)(const_cast<const MonMap&>(monmap),
+                                     std::forward<Args>(args)...);
   }
 
 private: