}
bool cmd_getval(const cmdmap_t& cmdmap,
- const std::string& k, bool& val)
+ std::string_view k, bool& val)
{
/*
* Specialized getval for booleans. CephBool didn't exist before Nautilus,
return true;
} catch (boost::bad_get&) {
try {
- std::string expected = "--" + k;
+ std::string expected{"--"};
+ expected += k;
std::replace(expected.begin(), expected.end(), '_', '-');
std::string v_str = boost::get<std::string>(cmdmap.find(k)->second);
struct bad_cmd_get : public std::exception {
std::string desc;
- bad_cmd_get(const std::string& f, const cmdmap_t& cmdmap) {
- desc = "bad or missing field '" + f + "'";
+ bad_cmd_get(std::string_view f, const cmdmap_t& cmdmap) {
+ desc += "bad or missing field '";
+ desc += f;
+ desc += "'";
}
const char *what() const throw() override {
return desc.c_str();
};
bool cmd_getval(const cmdmap_t& cmdmap,
- const std::string& k, bool& val);
+ std::string_view k, bool& val);
template <typename T>
bool cmd_getval(const cmdmap_t& cmdmap,
- const std::string& k, T& val)
+ std::string_view k, T& val)
{
if (cmdmap.count(k)) {
try {
template <typename T>
bool cmd_getval(
- const cmdmap_t& cmdmap, const std::string& k,
+ const cmdmap_t& cmdmap, std::string_view k,
T& val, const T& defval)
{
if (cmdmap.count(k)) {
template <typename T>
void
-cmd_putval(CephContext *cct, cmdmap_t& cmdmap, const std::string& k, const T& val)
+cmd_putval(CephContext *cct, cmdmap_t& cmdmap, std::string_view k, const T& val)
{
- cmdmap[k] = val;
+ cmdmap.insert_or_assign(std::string{k}, val);
}
bool validate_cmd(CephContext* cct,
*/
namespace TOPNSPC::common {
template<> bool cmd_getval(const cmdmap_t& cmdmap,
- const std::string& k, mds_gid_t &val)
+ std::string_view k, mds_gid_t &val)
{
return cmd_getval(cmdmap, k, (int64_t&)val);
}
template<> bool cmd_getval(const cmdmap_t& cmdmap,
- const std::string& k, mds_rank_t &val)
+ std::string_view k, mds_rank_t &val)
{
return cmd_getval(cmdmap, k, (int64_t&)val);
}
template<> bool cmd_getval(const cmdmap_t& cmdmap,
- const std::string& k, MDSMap::DaemonState &val)
+ std::string_view k, MDSMap::DaemonState &val)
{
return cmd_getval(cmdmap, k, (int64_t&)val);
}