}
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>
}
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)...);
}
};
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) {
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);
});
});
}
*/
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: