]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/admin_socket: Copy fewer strings
authorAdam C. Emerson <aemerson@redhat.com>
Tue, 30 Jan 2018 04:27:33 +0000 (23:27 -0500)
committerAdam C. Emerson <aemerson@redhat.com>
Fri, 16 Feb 2018 17:41:41 +0000 (12:41 -0500)
Pass std::string_view to call, rather than passing strings by value.

Change cmdmap_t and the maps in admin_socket to use the std::less<>
transparent comparator, so we can compare string_views to strings. (Or
anything else with an equality operator with strings.)

Pass the cmdmap_t in to call by const reference, not reference.

The change to cmdmap_t requires changing some of the users of
cmdmap_t. (That is, make them actually use cmdmap_t explicitly, not
the open-coed map type.)

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
45 files changed:
src/client/Client.cc
src/client/Client.h
src/common/admin_socket.cc
src/common/admin_socket.h
src/common/ceph_context.cc
src/common/ceph_context.h
src/common/cmdparse.cc
src/common/cmdparse.h
src/librbd/LibrbdAdminSocketHook.cc
src/librbd/LibrbdAdminSocketHook.h
src/mds/MDSDaemon.cc
src/mds/MDSDaemon.h
src/mds/MDSRank.cc
src/mds/MDSRank.h
src/mgr/DaemonServer.cc
src/mgr/DaemonServer.h
src/mon/AuthMonitor.cc
src/mon/ConfigKeyService.cc
src/mon/FSCommands.cc
src/mon/FSCommands.h
src/mon/LogMonitor.cc
src/mon/MDSMonitor.cc
src/mon/MDSMonitor.h
src/mon/MgrMonitor.cc
src/mon/Monitor.cc
src/mon/Monitor.h
src/mon/MonmapMonitor.cc
src/mon/OSDMonitor.cc
src/mon/OSDMonitor.h
src/mon/PGMap.cc
src/mon/PGMap.h
src/osd/OSD.cc
src/osd/OSD.h
src/osdc/Objecter.cc
src/rgw/rgw_coroutine.cc
src/rgw/rgw_coroutine.h
src/rgw/rgw_rados.cc
src/rgw/rgw_rados.h
src/rgw/rgw_sync_trace.cc
src/rgw/rgw_sync_trace.h
src/test/admin_socket.cc
src/tools/rbd_mirror/ImageDeleter.cc
src/tools/rbd_mirror/ImageReplayer.cc
src/tools/rbd_mirror/Mirror.cc
src/tools/rbd_mirror/PoolReplayer.cc

index 246428fbdaceb5d4324ddd5963f70f6a7e8cf397..168f2b7d20090cbd771d672f6d22c2d877523b7c 100644 (file)
@@ -137,8 +137,9 @@ Client::CommandHook::CommandHook(Client *client) :
 {
 }
 
-bool Client::CommandHook::call(std::string command, cmdmap_t& cmdmap,
-                              std::string format, bufferlist& out)
+bool Client::CommandHook::call(std::string_view command,
+                              const cmdmap_t& cmdmap,
+                              std::string_view format, bufferlist& out)
 {
   std::unique_ptr<Formatter> f(Formatter::create(format));
   f->open_object_section("result");
index 245b2f1358d95b1c245a8d6d9994be8c7415a82c..ae5b188538391024000225c760281d32040e8d7f 100644 (file)
@@ -257,8 +257,8 @@ class Client : public Dispatcher, public md_config_obs_t {
     Client *m_client;
   public:
     explicit CommandHook(Client *client);
-    bool call(std::string command, cmdmap_t &cmdmap, std::string format,
-             bufferlist& out) override;
+    bool call(std::string_view command, const cmdmap_t& cmdmap,
+              std::string_view format, bufferlist& out) override;
   };
   CommandHook m_command_hook;
 
index 362a9971fcc57fffc15579c75af8b33af8e5cca9..9478736a16b1ee27dc25f5442e1c61866d10d8bf 100644 (file)
@@ -359,7 +359,7 @@ bool AdminSocket::do_accept()
 
   bool rval = false;
 
-  map<string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
   string format;
   vector<string> cmdvec;
   stringstream errss;
@@ -382,7 +382,7 @@ bool AdminSocket::do_accept()
     p = m_hooks.find(match);
     if (p != m_hooks.end())
       break;
-    
+
     // drop right-most word
     size_t pos = match.rfind(' ');
     if (pos == std::string::npos) {
@@ -441,8 +441,8 @@ bool AdminSocket::do_accept()
 }
 
 bool AdminSocket::validate(const std::string& command,
-                         const cmdmap_t& cmdmap,
-                         bufferlist& out) const
+                          const cmdmap_t& cmdmap,
+                          bufferlist& out) const
 {
   stringstream os;
   if (validate_cmd(m_cct, m_descs.at(command), cmdmap, os)) {
@@ -453,7 +453,10 @@ bool AdminSocket::validate(const std::string& command,
   }
 }
 
-int AdminSocket::register_command(std::string command, std::string cmddesc, AdminSocketHook *hook, std::string help)
+int AdminSocket::register_command(std::string_view command,
+                                 std::string_view cmddesc,
+                                 AdminSocketHook *hook,
+                                 std::string_view help)
 {
   int ret;
   m_lock.Lock();
@@ -462,24 +465,24 @@ int AdminSocket::register_command(std::string command, std::string cmddesc, Admi
     ret = -EEXIST;
   } else {
     ldout(m_cct, 5) << "register_command " << command << " hook " << hook << dendl;
-    m_hooks[command] = hook;
-    m_descs[command] = cmddesc;
-    m_help[command] = help;
+    m_hooks.emplace(command, hook);
+    m_descs.emplace(command, cmddesc);
+    m_help.emplace(command, help);
     ret = 0;
-  }  
+  }
   m_lock.Unlock();
   return ret;
 }
 
-int AdminSocket::unregister_command(std::string command)
+int AdminSocket::unregister_command(std::string_view command)
 {
   int ret;
   m_lock.Lock();
   if (m_hooks.count(command)) {
     ldout(m_cct, 5) << "unregister_command " << command << dendl;
-    m_hooks.erase(command);
-    m_descs.erase(command);
-    m_help.erase(command);
+    m_hooks.erase(m_hooks.find(command));
+    m_descs.erase(m_descs.find(command));
+    m_help.erase(m_help.find(command));
 
     // If we are currently processing a command, wait for it to
     // complete in case it referenced the hook that we are
@@ -499,9 +502,9 @@ int AdminSocket::unregister_command(std::string command)
 
 class VersionHook : public AdminSocketHook {
 public:
-  bool call(std::string command, cmdmap_t &cmdmap, std::string format,
-                   bufferlist& out) override {
-    if (command == "0") {
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& out) override {
+    if (command == "0"sv) {
       out.append(CEPH_ADMIN_SOCK_VERSION);
     } else {
       JSONFormatter jf;
@@ -527,14 +530,14 @@ class HelpHook : public AdminSocketHook {
   AdminSocket *m_as;
 public:
   explicit HelpHook(AdminSocket *as) : m_as(as) {}
-  bool call(string command, cmdmap_t &cmdmap, string format, bufferlist& out) override {
-    Formatter *f = Formatter::create(format, "json-pretty", "json-pretty");
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format,
+           bufferlist& out) override {
+    auto f = Formatter::create(format, "json-pretty"sv, "json-pretty"sv);
     f->open_object_section("help");
-    for (map<string,string>::iterator p = m_as->m_help.begin();
-        p != m_as->m_help.end();
-        ++p) {
-      if (p->second.length())
-       f->dump_string(p->first.c_str(), p->second);
+    for (const auto& [command, help] : m_as->m_help) {
+      if (help.length())
+       f->dump_string(command.c_str(), help);
     }
     f->close_section();
     ostringstream ss;
@@ -549,19 +552,18 @@ class GetdescsHook : public AdminSocketHook {
   AdminSocket *m_as;
 public:
   explicit GetdescsHook(AdminSocket *as) : m_as(as) {}
-  bool call(string command, cmdmap_t &cmdmap, string format, bufferlist& out) override {
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& out) override {
     int cmdnum = 0;
     JSONFormatter jf;
     jf.open_object_section("command_descriptions");
-    for (map<string,string>::iterator p = m_as->m_descs.begin();
-        p != m_as->m_descs.end();
-        ++p) {
+    for (const auto& [command, desc] : m_as->m_descs) {
       ostringstream secname;
       secname << "cmd" << setfill('0') << std::setw(3) << cmdnum;
       dump_cmd_and_help_to_json(&jf,
                                secname.str().c_str(),
-                               p->second.c_str(),
-                               m_as->m_help[p->first]);
+                               desc,
+                               m_as->m_help[command]);
       cmdnum++;
     }
     jf.close_section(); // command_descriptions
@@ -573,7 +575,7 @@ public:
   }
 };
 
-bool AdminSocket::init(const std::string &path)
+bool AdminSocket::init(const std::stringpath)
 {
   ldout(m_cct, 5) << "init " << path << dendl;
 
index e3066bf3cdb38d579d994ab0571e6d01cdb33193..36d96178a0a36a650903c7348197aa7bbec0ed7c 100644 (file)
 #ifndef CEPH_COMMON_ADMIN_SOCKET_H
 #define CEPH_COMMON_ADMIN_SOCKET_H
 
+#include <string_view>
+
 #include "common/Cond.h"
 
 class AdminSocket;
 class CephContext;
 
-#define CEPH_ADMIN_SOCK_VERSION "2"
+inline constexpr auto CEPH_ADMIN_SOCK_VERSION = "2"sv;
 
 class AdminSocketHook {
 public:
-  virtual bool call(std::string command, cmdmap_t &cmdmap, std::string format,
-                   bufferlist& out) = 0;
+  virtual bool call(std::string_view command, const cmdmap_t& cmdmap,
+                   std::string_view format, bufferlist& out) = 0;
   virtual ~AdminSocketHook() {}
 };
 
@@ -35,6 +37,11 @@ public:
   AdminSocket(CephContext *cct);
   ~AdminSocket() override;
 
+  AdminSocket(const AdminSocket&) = delete;
+  AdminSocket& operator =(const AdminSocket&) = delete;
+  AdminSocket(AdminSocket&&) = delete;
+  AdminSocket& operator =(AdminSocket&&) = delete;
+
   /**
    * register an admin socket command
    *
@@ -54,7 +61,10 @@ public:
    *
    * @return 0 for success, -EEXIST if command already registered.
    */
-  int register_command(std::string command, std::string cmddesc, AdminSocketHook *hook, std::string help);
+  int register_command(std::string_view command,
+                      std::string_view cmddesc,
+                      AdminSocketHook *hook,
+                      std::string_view help);
 
   /**
    * unregister an admin socket command.
@@ -66,16 +76,14 @@ public:
    * @param command command string
    * @return 0 on succest, -ENOENT if command dne.
    */
-  int unregister_command(std::string command);
+  int unregister_command(std::string_view command);
 
-  bool init(const std::string &path);
+  bool init(const string& path);
 
   void chown(uid_t uid, gid_t gid);
   void chmod(mode_t mode);
 
 private:
-  AdminSocket(const AdminSocket& rhs);
-  AdminSocket& operator=(const AdminSocket &rhs);
 
   void shutdown();
 
@@ -100,9 +108,9 @@ private:
   Mutex m_lock;    // protects m_hooks, m_descs, m_help
   AdminSocketHook *m_version_hook, *m_help_hook, *m_getdescs_hook;
 
-  std::map<std::string,AdminSocketHook*> m_hooks;
-  std::map<std::string,std::string> m_descs;
-  std::map<std::string,std::string> m_help;
+  std::map<std::string,AdminSocketHook*, std::less<>> m_hooks;
+  std::map<std::string,std::string, std::less<>> m_descs;
+  std::map<std::string,std::string, std::less<>> m_help;
 
   friend class AdminSocketTest;
   friend class HelpHook;
index 401dbf53fc055c7f209b9d249320131fc317d351..c3533539eb53fbad98e2fd59fce41e757242c448 100644 (file)
@@ -105,8 +105,8 @@ public:
   }
 
   // AdminSocketHook
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format,
-           bufferlist& out) override {
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& out) override {
     if (command == "dump_mempools") {
       std::unique_ptr<Formatter> f(Formatter::create(format));
       f->open_object_section("mempools");
@@ -367,19 +367,19 @@ class CephContextHook : public AdminSocketHook {
 public:
   explicit CephContextHook(CephContext *cct) : m_cct(cct) {}
 
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format,
-           bufferlist& out) override {
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& out) override {
     m_cct->do_command(command, cmdmap, format, &out);
     return true;
   }
 };
 
-void CephContext::do_command(std::string command, cmdmap_t& cmdmap,
-                            std::string format, bufferlist *out)
+void CephContext::do_command(std::string_view command, const cmdmap_t& cmdmap,
+                            std::string_view format, bufferlist *out)
 {
   Formatter *f = Formatter::create(format, "json-pretty", "json-pretty");
   stringstream ss;
-  for (cmdmap_t::iterator it = cmdmap.begin(); it != cmdmap.end(); ++it) {
+  for (auto it = cmdmap.begin(); it != cmdmap.end(); ++it) {
     if (it->first != "prefix") {
       ss << it->first  << ":" << cmd_vartype_stringify(it->second) << " ";
     }
@@ -411,7 +411,7 @@ void CephContext::do_command(std::string command, cmdmap_t& cmdmap,
   }
   else if (command == "perf reset") {
     std::string var;
-    string section = command;
+    std::string section(command);
     f->open_object_section(section.c_str());
     if (!cmd_getval(this, cmdmap, "var", var)) {
       f->dump_string("error", "syntax error: 'perf reset <var>'");
@@ -419,12 +419,12 @@ void CephContext::do_command(std::string command, cmdmap_t& cmdmap,
      if(!_perf_counters_collection->reset(var))
         f->dump_stream("error") << "Not find: " << var;
      else
-       f->dump_string("success", command + ' ' + var);
+       f->dump_string("success", std::string(command) + ' ' + var);
     }
     f->close_section();
   }
   else {
-    string section = command;
+    std::string section(command);
     boost::replace_all(section, " ", "_");
     f->open_object_section(section.c_str());
     if (command == "config show") {
index 9070cfb72e82e2c3d8a0584b7c9a0723418d62ec..72d912205695bdc45c46e0733198be5498426b10 100644 (file)
@@ -126,8 +126,8 @@ public:
   /**
    * process an admin socket command
    */
-  void do_command(std::string command, cmdmap_t& cmdmap, std::string format,
-                 ceph::bufferlist *out);
+  void do_command(std::string_view command, const cmdmap_t& cmdmap,
+                 std::string_view format, ceph::bufferlist *out);
 
   template<typename T>
   void lookup_or_create_singleton_object(T*& p, const std::string &name) {
index 473ad10cde31c12c40911da8c26de95aef16c2f8..51a9c1abed369853f6d87ca610837d0901ae2b5d 100644 (file)
@@ -211,7 +211,7 @@ void cmdmap_dump(const cmdmap_t &cmdmap, Formatter *f)
  * false, ss is valid */
 
 bool
-cmdmap_from_json(vector<string> cmd, map<string, cmd_vartype> *mapp, stringstream &ss)
+cmdmap_from_json(vector<string> cmd, cmdmap_t *mapp, stringstream &ss)
 {
   json_spirit::mValue v;
 
index 814430418eb3144a570dff5581f40e5c959a5a37..808501387baa74e565813dc0a65bcecd6f24e38b 100644 (file)
@@ -23,7 +23,7 @@ typedef boost::variant<std::string,
                       std::vector<std::string>,
                       std::vector<int64_t>,
                       std::vector<double>>  cmd_vartype;
-typedef std::map<std::string, cmd_vartype> cmdmap_t;
+typedef std::map<std::string, cmd_vartype, std::less<>> cmdmap_t;
 
 std::string cmddesc_get_prefix(const std::string &cmddesc);
 void dump_cmd_to_json(ceph::Formatter *f, const std::string& cmd);
index 02c4fb58f296b1af55be90fc399a68959307797c..0b0c2bf0bf030620d3cad224d2dbb15210509af0 100644 (file)
@@ -88,8 +88,10 @@ LibrbdAdminSocketHook::~LibrbdAdminSocketHook() {
   }
 }
 
-bool LibrbdAdminSocketHook::call(std::string command, cmdmap_t& cmdmap,
-                                std::string format, bufferlist& out) {
+bool LibrbdAdminSocketHook::call(std::string_view command,
+                                const cmdmap_t& cmdmap,
+                                std::string_view format,
+                                bufferlist& out) {
   Commands::const_iterator i = commands.find(command);
   assert(i != commands.end());
   stringstream ss;
index cdc2e3db09aba3df025cfe02074a9e5c7e680631..8b1b5b9422f637c6e382e70fc53acb94728ed2d6 100644 (file)
@@ -17,11 +17,12 @@ namespace librbd {
     LibrbdAdminSocketHook(ImageCtx *ictx);
     ~LibrbdAdminSocketHook() override;
 
-    bool call(std::string command, cmdmap_t& cmdmap, std::string format,
-             bufferlist& out) override;
+    bool call(std::string_view command, const cmdmap_t& cmdmap,
+             std::string_view format, bufferlist& out) override;
 
   private:
-    typedef std::map<std::string,LibrbdAdminSocketCommand*> Commands;
+    typedef std::map<std::string,LibrbdAdminSocketCommand*,
+                    std::less<>> Commands;
 
     AdminSocket *admin_socket;
     Commands commands;
index 4b3a6a2a34b3f92e5db89ae9a5cd7402627d3ca4..305d630239910dc63467dac950211060ea4c1d90 100644 (file)
@@ -117,8 +117,8 @@ class MDSSocketHook : public AdminSocketHook {
   MDSDaemon *mds;
 public:
   explicit MDSSocketHook(MDSDaemon *m) : mds(m) {}
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format,
-           bufferlist& out) override {
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& out) override {
     stringstream ss;
     bool r = mds->asok_command(command, cmdmap, format, ss);
     out.append(ss);
@@ -126,8 +126,8 @@ public:
   }
 };
 
-bool MDSDaemon::asok_command(string command, cmdmap_t& cmdmap, string format,
-                   ostream& ss)
+bool MDSDaemon::asok_command(std::string_view command, const cmdmap_t& cmdmap,
+                            std::string_view format, std::ostream& ss)
 {
   dout(1) << "asok_command: " << command << " (starting...)" << dendl;
 
index 29a273afadcda92ccaa36580cd0d0c6439a9f79d..4ba26d54ee9d553f8250ea609ab654b77ec344d2 100644 (file)
@@ -113,8 +113,8 @@ class MDSDaemon : public Dispatcher, public md_config_obs_t {
   void set_up_admin_socket();
   void clean_up_admin_socket();
   void check_ops_in_flight(); // send off any slow ops to monitor
-  bool asok_command(string command, cmdmap_t& cmdmap, string format,
-                   ostream& ss);
+  bool asok_command(std::string_view command, const cmdmap_t& cmdmap,
+                   std::string_view format, ostream& ss);
 
   void dump_status(Formatter *f);
 
index 91d4e31d3410c05fd334851395a6af994c82f2d6..6650755e58fed93349b758694b1e8e991df9740e 100644 (file)
@@ -1851,9 +1851,10 @@ void MDSRank::handle_mds_failure(mds_rank_t who)
   snapclient->handle_mds_failure(who);
 }
 
-bool MDSRankDispatcher::handle_asok_command(
-    std::string command, cmdmap_t& cmdmap, Formatter *f,
-                   std::ostream& ss)
+bool MDSRankDispatcher::handle_asok_command(std::string_view command,
+                                           const cmdmap_t& cmdmap,
+                                           Formatter *f,
+                                           std::ostream& ss)
 {
   if (command == "dump_ops_in_flight" ||
              command == "ops") {
index 39e09c7b0c0b3bc0ad1f6ee28ceacfb26a90e06d..fa64d1d8b7adc63abe85c124acd2cd1d912799ab 100644 (file)
@@ -541,7 +541,7 @@ public:
   void init();
   void tick();
   void shutdown();
-  bool handle_asok_command(std::string command, cmdmap_t& cmdmap,
+  bool handle_asok_command(std::string_view command, const cmdmap_t& cmdmap,
                            Formatter *f, std::ostream& ss);
   void handle_mds_map(MMDSMap *m, MDSMap *oldmap);
   void handle_osd_map();
index 0be909070abb5cf9e9469939b4835ae815f84699..a8ba11db6b8e43c7c6dcedf14c35e1f018e5385a 100644 (file)
@@ -522,10 +522,10 @@ bool DaemonServer::handle_report(MMgrReport *m)
 
 
 void DaemonServer::_generate_command_map(
-  map<string,cmd_vartype>& cmdmap,
+  cmdmap_t& cmdmap,
   map<string,string> &param_str_map)
 {
-  for (map<string,cmd_vartype>::const_iterator p = cmdmap.begin();
+  for (auto p = cmdmap.begin();
        p != cmdmap.end(); ++p) {
     if (p->first == "prefix")
       continue;
@@ -562,7 +562,7 @@ bool DaemonServer::_allowed_command(
   MgrSession *s,
   const string &module,
   const string &prefix,
-  const map<string,cmd_vartype>& cmdmap,
+  const cmdmap_t& cmdmap,
   const map<string,string>& param_str_map,
   const MonCommand *this_cmd) {
 
index 1dcc24b2778683c2a2021ff10bcedb294a932bd5..9c0575461d2bb2e74d001a14d8df8fa3276f2a7e 100644 (file)
@@ -80,13 +80,13 @@ protected:
 
   Mutex lock;
 
-  static void _generate_command_map(map<string,cmd_vartype>& cmdmap,
+  static void _generate_command_map(cmdmap_t& cmdmap,
                                     map<string,string> &param_str_map);
   static const MonCommand *_get_mgrcommand(const string &cmd_prefix,
                                            const std::vector<MonCommand> &commands);
   bool _allowed_command(
     MgrSession *s, const string &module, const string &prefix,
-    const map<string,cmd_vartype>& cmdmap,
+    const cmdmap_t& cmdmap,
     const map<string,string>& param_str_map,
     const MonCommand *this_cmd);
 
index e2d303a0ae16e047a09128d08d065f94baf50ac0..72ff9fd272d357b252454375e63fdd4194e9a835 100644 (file)
@@ -524,7 +524,7 @@ bool AuthMonitor::preprocess_command(MonOpRequestRef op)
   bufferlist rdata;
   stringstream ss, ds;
 
-  map<string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
   if (!cmdmap_from_json(m->cmd, &cmdmap, ss)) {
     // ss has reason for failure
     string rs = ss.str();
@@ -1011,7 +1011,7 @@ bool AuthMonitor::prepare_command(MonOpRequestRef op)
   string rs;
   int err = -EINVAL;
 
-  map<string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
   if (!cmdmap_from_json(m->cmd, &cmdmap, ss)) {
     // ss has reason for failure
     string rs = ss.str();
index cd0587d2e2fef2b1447f11d60106fb41d390c68c..4318171848044f70e920aa30f1a971359f3bc2fc 100644 (file)
@@ -165,7 +165,7 @@ bool ConfigKeyService::service_dispatch(MonOpRequestRef op)
   bufferlist rdata;
 
   string prefix;
-  map<string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
 
   if (!cmdmap_from_json(cmd->cmd, &cmdmap, ss)) {
     return false;
index a33140c99e7bf1d1295e30d35debdf403b883431..0d90f663c8f451ffb0fbeb135e95001101fbc8ff 100644 (file)
@@ -40,7 +40,7 @@ class FlagSetHandler : public FileSystemCommandHandler
       Monitor *mon,
       FSMap &fsmap,
       MonOpRequestRef op,
-      map<string, cmd_vartype> &cmdmap,
+      const cmdmap_t& cmdmap,
       std::stringstream &ss) override
   {
     string flag_name;
@@ -93,7 +93,7 @@ class FsNewHandler : public FileSystemCommandHandler
       Monitor *mon,
       FSMap &fsmap,
       MonOpRequestRef op,
-      map<string, cmd_vartype> &cmdmap,
+      const cmdmap_t& cmdmap,
       std::stringstream &ss) override
   {
     assert(m_paxos->is_plugged());
@@ -224,7 +224,7 @@ public:
       Monitor *mon,
       FSMap &fsmap,
       MonOpRequestRef op,
-      map<string, cmd_vartype> &cmdmap,
+      const cmdmap_t& cmdmap,
       std::stringstream &ss) override
   {
     std::string fs_name;
@@ -507,7 +507,7 @@ class AddDataPoolHandler : public FileSystemCommandHandler
       Monitor *mon,
       FSMap &fsmap,
       MonOpRequestRef op,
-      map<string, cmd_vartype> &cmdmap,
+      const cmdmap_t& cmdmap,
       std::stringstream &ss) override
   {
     assert(m_paxos->is_plugged());
@@ -586,7 +586,7 @@ class SetDefaultHandler : public FileSystemCommandHandler
       Monitor *mon,
       FSMap &fsmap,
       MonOpRequestRef op,
-      map<string, cmd_vartype> &cmdmap,
+      const cmdmap_t& cmdmap,
       std::stringstream &ss) override
   {
     std::string fs_name;
@@ -613,7 +613,7 @@ class RemoveFilesystemHandler : public FileSystemCommandHandler
       Monitor *mon,
       FSMap &fsmap,
       MonOpRequestRef op,
-      map<string, cmd_vartype> &cmdmap,
+      const cmdmap_t& cmdmap,
       std::stringstream &ss) override
   {
     // Check caller has correctly named the FS to delete
@@ -677,7 +677,7 @@ class ResetFilesystemHandler : public FileSystemCommandHandler
       Monitor *mon,
       FSMap &fsmap,
       MonOpRequestRef op,
-      map<string, cmd_vartype> &cmdmap,
+      const cmdmap_t& cmdmap,
       std::stringstream &ss) override
   {
     string fs_name;
@@ -722,7 +722,7 @@ class RemoveDataPoolHandler : public FileSystemCommandHandler
       Monitor *mon,
       FSMap &fsmap,
       MonOpRequestRef op,
-      map<string, cmd_vartype> &cmdmap,
+      const cmdmap_t& cmdmap,
       std::stringstream &ss) override
   {
     string poolname;
@@ -803,7 +803,7 @@ class AliasHandler : public T
       Monitor *mon,
       FSMap &fsmap,
       MonOpRequestRef op,
-      map<string, cmd_vartype> &cmdmap,
+      const cmdmap_t& cmdmap,
       std::stringstream &ss) override
   {
     return T::handle(mon, fsmap, op, cmdmap, ss);
index b6b029a17d3f06c3895005e39883faf04203110f..f7066c49f8635ac4cdc4414cc7a60875802423c0 100644 (file)
@@ -80,7 +80,7 @@ public:
     Monitor *mon,
     FSMap &fsmap,
     MonOpRequestRef op,
-    map<string, cmd_vartype> &cmdmap,
+    const cmdmap_t& cmdmap,
     std::stringstream &ss) = 0;
 };
 
index 0c1065d45ab09cdba1deb214628f4f47c7db0e15..2d785d4d884cb88213ea55133746324ad6b5fa58 100644 (file)
@@ -382,7 +382,7 @@ bool LogMonitor::preprocess_command(MonOpRequestRef op)
   bufferlist rdata;
   stringstream ss;
 
-  map<string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
   if (!cmdmap_from_json(m->cmd, &cmdmap, ss)) {
     string rs = ss.str();
     mon->reply_command(op, -EINVAL, rs, get_last_committed());
@@ -479,7 +479,7 @@ bool LogMonitor::prepare_command(MonOpRequestRef op)
   string rs;
   int err = -EINVAL;
 
-  map<string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
   if (!cmdmap_from_json(m->cmd, &cmdmap, ss)) {
     // ss has reason for failure
     string rs = ss.str();
index 028dc6704dda8b47a8abaee382b381854687ae90..c5a91cf4a8c43f51fb3cfcfb6810926d5abb59b3 100644 (file)
@@ -839,7 +839,7 @@ bool MDSMonitor::preprocess_command(MonOpRequestRef op)
   bufferlist rdata;
   stringstream ss, ds;
 
-  map<string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
   if (!cmdmap_from_json(m->cmd, &cmdmap, ss)) {
     // ss has reason for failure
     string rs = ss.str();
@@ -1167,7 +1167,7 @@ bool MDSMonitor::prepare_command(MonOpRequestRef op)
   stringstream ss;
   bufferlist rdata;
 
-  map<string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
   if (!cmdmap_from_json(m->cmd, &cmdmap, ss)) {
     string rs = ss.str();
     mon->reply_command(op, -EINVAL, rs, rdata, get_last_committed());
@@ -1283,7 +1283,7 @@ int MDSMonitor::parse_role(
 int MDSMonitor::filesystem_command(
     MonOpRequestRef op,
     std::string const &prefix,
-    map<string, cmd_vartype> &cmdmap,
+    const cmdmap_t& cmdmap,
     std::stringstream &ss)
 {
   dout(4) << __func__ << " prefix='" << prefix << "'" << dendl;
@@ -1331,13 +1331,13 @@ int MDSMonitor::filesystem_command(
     mds_gid_t gid;
     if (!cmd_getval(g_ceph_context, cmdmap, "gid", gid)) {
       ss << "error parsing 'gid' value '"
-         << cmd_vartype_stringify(cmdmap["gid"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("gid")) << "'";
       return -EINVAL;
     }
     MDSMap::DaemonState state;
     if (!cmd_getval(g_ceph_context, cmdmap, "state", state)) {
       ss << "error parsing 'state' string value '"
-         << cmd_vartype_stringify(cmdmap["state"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("state")) << "'";
       return -EINVAL;
     }
     if (pending_fsmap.gid_exists(gid)) {
@@ -1368,7 +1368,7 @@ int MDSMonitor::filesystem_command(
     mds_gid_t gid;
     if (!cmd_getval(g_ceph_context, cmdmap, "gid", gid)) {
       ss << "error parsing 'gid' value '"
-         << cmd_vartype_stringify(cmdmap["gid"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("gid")) << "'";
       return -EINVAL;
     }
     if (!pending_fsmap.gid_exists(gid)) {
@@ -1417,7 +1417,7 @@ int MDSMonitor::filesystem_command(
     int64_t f;
     if (!cmd_getval(g_ceph_context, cmdmap, "feature", f)) {
       ss << "error parsing feature value '"
-         << cmd_vartype_stringify(cmdmap["feature"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("feature")) << "'";
       return -EINVAL;
     }
     if (pending_fsmap.compat.compat.contains(f)) {
@@ -1433,7 +1433,7 @@ int MDSMonitor::filesystem_command(
     int64_t f;
     if (!cmd_getval(g_ceph_context, cmdmap, "feature", f)) {
       ss << "error parsing feature value '"
-         << cmd_vartype_stringify(cmdmap["feature"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("feature")) << "'";
       return -EINVAL;
     }
     if (pending_fsmap.compat.incompat.contains(f)) {
index c59858a092bcb52274c7951c1f586391078f2504..760bdeebbeb92cd0eb16c16555a5c4775724ae35 100644 (file)
@@ -98,7 +98,7 @@ class MDSMonitor : public PaxosService {
   int filesystem_command(
       MonOpRequestRef op,
       std::string const &prefix,
-      map<string, cmd_vartype> &cmdmap,
+      const cmdmap_t& cmdmap,
       std::stringstream &ss);
 
   // beacons
index 76985abc04332cc8070a2af1fc018713dbb59a69..50a7b80873ee3e5f86b45e2e4e7a86afa1a80bb2 100644 (file)
@@ -666,7 +666,7 @@ bool MgrMonitor::preprocess_command(MonOpRequestRef op)
   std::stringstream ss;
   bufferlist rdata;
 
-  std::map<std::string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
   if (!cmdmap_from_json(m->cmd, &cmdmap, ss)) {
     string rs = ss.str();
     mon->reply_command(op, -EINVAL, rs, rdata, get_last_committed());
@@ -806,7 +806,7 @@ bool MgrMonitor::prepare_command(MonOpRequestRef op)
   std::stringstream ss;
   bufferlist rdata;
 
-  std::map<std::string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
   if (!cmdmap_from_json(m->cmd, &cmdmap, ss)) {
     string rs = ss.str();
     mon->reply_command(op, -EINVAL, rs, rdata, get_last_committed());
index d6341cb0a0cf67bf36e250767de16cc0ca48026a..4a93abbe6f6b97ddafb1e559a6e74921e7a56893 100644 (file)
@@ -226,8 +226,8 @@ class AdminHook : public AdminSocketHook {
   Monitor *mon;
 public:
   explicit AdminHook(Monitor *m) : mon(m) {}
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format,
-           bufferlist& out) override {
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& out) override {
     stringstream ss;
     mon->do_admin_command(command, cmdmap, format, ss);
     out.append(ss);
@@ -235,15 +235,15 @@ public:
   }
 };
 
-void Monitor::do_admin_command(string command, cmdmap_t& cmdmap, string format,
-                              ostream& ss)
+void Monitor::do_admin_command(std::string_view command, const cmdmap_t& cmdmap,
+                              std::string_view format, std::ostream& ss)
 {
   Mutex::Locker l(lock);
 
   boost::scoped_ptr<Formatter> f(Formatter::create(format));
 
   string args;
-  for (cmdmap_t::iterator p = cmdmap.begin();
+  for (auto p = cmdmap.begin();
        p != cmdmap.end(); ++p) {
     if (p->first == "prefix")
       continue;
@@ -1006,12 +1006,14 @@ void Monitor::bootstrap()
   }
 }
 
-bool Monitor::_add_bootstrap_peer_hint(string cmd, cmdmap_t& cmdmap, ostream& ss)
+bool Monitor::_add_bootstrap_peer_hint(std::string_view cmd,
+                                      const cmdmap_t& cmdmap,
+                                      ostream& ss)
 {
   string addrstr;
   if (!cmd_getval(g_ceph_context, cmdmap, "addr", addrstr)) {
     ss << "unable to parse address string value '"
-         << cmd_vartype_stringify(cmdmap["addr"]) << "'";
+       << cmd_vartype_stringify(cmdmap.at("addr")) << "'";
     return false;
   }
   dout(10) << "_add_bootstrap_peer_hint '" << cmd << "' '"
@@ -2719,11 +2721,10 @@ void Monitor::get_cluster_status(stringstream &ss, Formatter *f)
   }
 }
 
-void Monitor::_generate_command_map(map<string,cmd_vartype>& cmdmap,
+void Monitor::_generate_command_map(cmdmap_t& cmdmap,
                                     map<string,string> &param_str_map)
 {
-  for (map<string,cmd_vartype>::const_iterator p = cmdmap.begin();
-       p != cmdmap.end(); ++p) {
+  for (auto p = cmdmap.begin(); p != cmdmap.end(); ++p) {
     if (p->first == "prefix")
       continue;
     if (p->first == "caps") {
@@ -2753,8 +2754,8 @@ const MonCommand *Monitor::_get_moncommand(
   return nullptr;
 }
 
-bool Monitor::_allowed_command(MonSession *s, string &module, string &prefix,
-                               const map<string,cmd_vartype>& cmdmap,
+bool Monitor::_allowed_command(MonSession *s, const string &module,
+                              const string &prefix, const cmdmap_t& cmdmap,
                                const map<string,string>& param_str_map,
                                const MonCommand *this_cmd) {
 
@@ -2847,7 +2848,7 @@ void Monitor::handle_command(MonOpRequestRef op)
 
   string prefix;
   vector<string> fullcmd;
-  map<string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
   stringstream ss, ds;
   bufferlist rdata;
   string rs;
index 4d0ea79637edde5ee7b17c71f14639b0d16b8a6d..3bf4c3c30ca9b7c477bd3402683508bdeb4ccc94 100644 (file)
@@ -665,18 +665,20 @@ public:
   void handle_subscribe(MonOpRequestRef op);
   void handle_mon_get_map(MonOpRequestRef op);
 
-  static void _generate_command_map(map<string,cmd_vartype>& cmdmap,
+  static void _generate_command_map(cmdmap_t& cmdmap,
                                     map<string,string> &param_str_map);
   static const MonCommand *_get_moncommand(
     const string &cmd_prefix,
     const vector<MonCommand>& cmds);
-  bool _allowed_command(MonSession *s, string &module, string &prefix,
-                        const map<string,cmd_vartype>& cmdmap,
+  bool _allowed_command(MonSession *s, const string& module,
+                       const string& prefix,
+                        const cmdmap_t& cmdmap,
                         const map<string,string>& param_str_map,
                         const MonCommand *this_cmd);
   void get_mon_status(Formatter *f, ostream& ss);
   void _quorum_status(Formatter *f, ostream& ss);
-  bool _add_bootstrap_peer_hint(string cmd, cmdmap_t& cmdmap, ostream& ss);
+  bool _add_bootstrap_peer_hint(std::string_view cmd, const cmdmap_t& cmdmap,
+                               std::ostream& ss);
   void handle_command(MonOpRequestRef op);
   void handle_route(MonOpRequestRef op);
 
@@ -944,8 +946,8 @@ public:
   int write_fsid();
   int write_fsid(MonitorDBStore::TransactionRef t);
 
-  void do_admin_command(std::string command, cmdmap_t& cmdmap,
-                       std::string format, ostream& ss);
+  void do_admin_command(std::string_view command, const cmdmap_t& cmdmap,
+                       std::string_view format, std::ostream& ss);
 
 private:
   // don't allow copying
index f84c930e5df3da5dd35ea4070cc7244492d16792..8997f6d214ad8d2bfed2605e7913a2a89ca4a489 100644 (file)
@@ -230,7 +230,7 @@ bool MonmapMonitor::preprocess_command(MonOpRequestRef op)
   bufferlist rdata;
   stringstream ss;
 
-  map<string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
   if (!cmdmap_from_json(m->cmd, &cmdmap, ss)) {
     string rs = ss.str();
     mon->reply_command(op, -EINVAL, rs, rdata, get_last_committed());
@@ -422,7 +422,7 @@ bool MonmapMonitor::prepare_command(MonOpRequestRef op)
   string rs;
   int err = -EINVAL;
 
-  map<string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
   if (!cmdmap_from_json(m->cmd, &cmdmap, ss)) {
     string rs = ss.str();
     mon->reply_command(op, -EINVAL, rs, get_last_committed());
index a74191aabf331c3c9a413ac8831ecfc771d71305..d7056aa6f10bae6d3256fdd4ca121038458645c2 100644 (file)
@@ -3603,7 +3603,7 @@ bool OSDMonitor::preprocess_command(MonOpRequestRef op)
   bufferlist rdata;
   stringstream ss, ds;
 
-  map<string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
   if (!cmdmap_from_json(m->cmd, &cmdmap, ss)) {
     string rs = ss.str();
     mon->reply_command(op, -EINVAL, rs, get_last_committed());
@@ -5895,7 +5895,7 @@ bool OSDMonitor::prepare_unset_flag(MonOpRequestRef op, int flag)
   return true;
 }
 
-int OSDMonitor::prepare_command_pool_set(map<string,cmd_vartype> &cmdmap,
+int OSDMonitor::prepare_command_pool_set(const cmdmap_t& cmdmap,
                                          stringstream& ss)
 {
   string poolstr;
@@ -6382,7 +6382,7 @@ int OSDMonitor::prepare_command_pool_set(map<string,cmd_vartype> &cmdmap,
 }
 
 int OSDMonitor::prepare_command_pool_application(const string &prefix,
-                                                 map<string,cmd_vartype> &cmdmap,
+                                                 const cmdmap_t& cmdmap,
                                                  stringstream& ss)
 {
   string pool_name;
@@ -6809,7 +6809,7 @@ int OSDMonitor::prepare_command_osd_create(
 
 int OSDMonitor::prepare_command_osd_new(
     MonOpRequestRef op,
-    const map<string,cmd_vartype>& cmdmap,
+    const cmdmap_t& cmdmap,
     const map<string,string>& params,
     stringstream &ss,
     Formatter *f)
@@ -7074,7 +7074,7 @@ bool OSDMonitor::prepare_command(MonOpRequestRef op)
   op->mark_osdmon_event(__func__);
   MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
   stringstream ss;
-  map<string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
   if (!cmdmap_from_json(m->cmd, &cmdmap, ss)) {
     string rs = ss.str();
     mon->reply_command(op, -EINVAL, rs, get_last_committed());
@@ -7091,7 +7091,7 @@ bool OSDMonitor::prepare_command(MonOpRequestRef op)
 }
 
 static int parse_reweights(CephContext *cct,
-                          const map<string,cmd_vartype> &cmdmap,
+                          const cmdmap_t& cmdmap,
                           const OSDMap& osdmap,
                           map<int32_t, uint32_t>* weights)
 {
@@ -7268,7 +7268,7 @@ int OSDMonitor::prepare_command_osd_purge(
 }
 
 bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
-                                     map<string,cmd_vartype> &cmdmap)
+                                     const cmdmap_t& cmdmap)
 {
   op->mark_osdmon_event(__func__);
   MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
@@ -7846,7 +7846,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     double weight;
     if (!cmd_getval(cct, cmdmap, "weight", weight)) {
       ss << "unable to parse weight value '"
-         << cmd_vartype_stringify(cmdmap["weight"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("weight")) << "'";
       err = -EINVAL;
       goto reply;
     }
@@ -7915,7 +7915,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
       double weight;
       if (!cmd_getval(cct, cmdmap, "weight", weight)) {
         ss << "unable to parse weight value '"
-           << cmd_vartype_stringify(cmdmap["weight"]) << "'";
+           << cmd_vartype_stringify(cmdmap.at("weight")) << "'";
         err = -EINVAL;
         goto reply;
       }
@@ -8191,7 +8191,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     double w;
     if (!cmd_getval(cct, cmdmap, "weight", w)) {
       ss << "unable to parse weight value '"
-        << cmd_vartype_stringify(cmdmap["weight"]) << "'";
+        << cmd_vartype_stringify(cmdmap.at("weight")) << "'";
       err = -EINVAL;
       goto reply;
     }
@@ -8229,7 +8229,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     double w;
     if (!cmd_getval(cct, cmdmap, "weight", w)) {
       ss << "unable to parse weight value '"
-        << cmd_vartype_stringify(cmdmap["weight"]) << "'";
+        << cmd_vartype_stringify(cmdmap.at("weight")) << "'";
       err = -EINVAL;
       goto reply;
     }
@@ -8295,7 +8295,8 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     int64_t value = -1;
     if (!cmd_getval(cct, cmdmap, "value", value)) {
       err = -EINVAL;
-      ss << "failed to parse integer value " << cmd_vartype_stringify(cmdmap["value"]);
+      ss << "failed to parse integer value "
+        << cmd_vartype_stringify(cmdmap.at("value"));
       goto reply;
     }
 
@@ -8648,7 +8649,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     int64_t newmax;
     if (!cmd_getval(cct, cmdmap, "newmax", newmax)) {
       ss << "unable to parse 'newmax' value '"
-         << cmd_vartype_stringify(cmdmap["newmax"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("newmax")) << "'";
       err = -EINVAL;
       goto reply;
     }
@@ -8690,7 +8691,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     double n;
     if (!cmd_getval(cct, cmdmap, "ratio", n)) {
       ss << "unable to parse 'ratio' value '"
-         << cmd_vartype_stringify(cmdmap["ratio"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("ratio")) << "'";
       err = -EINVAL;
       goto reply;
     }
@@ -9393,7 +9394,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     string pgidstr;
     if (!cmd_getval(cct, cmdmap, "pgid", pgidstr)) {
       ss << "unable to parse 'pgid' value '"
-         << cmd_vartype_stringify(cmdmap["pgid"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("pgid")) << "'";
       err = -EINVAL;
       goto reply;
     }
@@ -9455,7 +9456,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     string pgidstr;
     if (!cmd_getval(cct, cmdmap, "pgid", pgidstr)) {
       ss << "unable to parse 'pgid' value '"
-         << cmd_vartype_stringify(cmdmap["pgid"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("pgid")) << "'";
       err = -EINVAL;
       goto reply;
     }
@@ -9474,7 +9475,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     int64_t osd;
     if (!cmd_getval(cct, cmdmap, "id", osd)) {
       ss << "unable to parse 'id' value '"
-         << cmd_vartype_stringify(cmdmap["id"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("id")) << "'";
       err = -EINVAL;
       goto reply;
     }
@@ -9517,7 +9518,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     string pgidstr;
     if (!cmd_getval(cct, cmdmap, "pgid", pgidstr)) {
       ss << "unable to parse 'pgid' value '"
-         << cmd_vartype_stringify(cmdmap["pgid"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("pgid")) << "'";
       err = -EINVAL;
       goto reply;
     }
@@ -9584,7 +9585,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
         vector<int64_t> id_vec;
         if (!cmd_getval(cct, cmdmap, "id", id_vec)) {
           ss << "unable to parse 'id' value(s) '"
-             << cmd_vartype_stringify(cmdmap["id"]) << "'";
+             << cmd_vartype_stringify(cmdmap.at("id")) << "'";
           err = -EINVAL;
           goto reply;
         }
@@ -9644,7 +9645,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
         vector<int64_t> id_vec;
         if (!cmd_getval(cct, cmdmap, "id", id_vec)) {
           ss << "unable to parse 'id' value(s) '"
-             << cmd_vartype_stringify(cmdmap["id"]) << "'";
+             << cmd_vartype_stringify(cmdmap.at("id")) << "'";
           err = -EINVAL;
           goto reply;
         }
@@ -9726,14 +9727,14 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     int64_t id;
     if (!cmd_getval(cct, cmdmap, "id", id)) {
       ss << "invalid osd id value '"
-         << cmd_vartype_stringify(cmdmap["id"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("id")) << "'";
       err = -EINVAL;
       goto reply;
     }
     double w;
     if (!cmd_getval(cct, cmdmap, "weight", w)) {
       ss << "unable to parse 'weight' value '"
-           << cmd_vartype_stringify(cmdmap["weight"]) << "'";
+        << cmd_vartype_stringify(cmdmap.at("weight")) << "'";
       err = -EINVAL;
       goto reply;
     }
@@ -9767,14 +9768,14 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     int64_t id;
     if (!cmd_getval(cct, cmdmap, "id", id)) {
       ss << "unable to parse osd id value '"
-         << cmd_vartype_stringify(cmdmap["id"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("id")) << "'";
       err = -EINVAL;
       goto reply;
     }
     double w;
     if (!cmd_getval(cct, cmdmap, "weight", w)) {
       ss << "unable to parse weight value '"
-         << cmd_vartype_stringify(cmdmap["weight"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("weight")) << "'";
       err = -EINVAL;
       goto reply;
     }
@@ -9801,7 +9802,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     err = parse_reweights(cct, cmdmap, osdmap, &weights);
     if (err) {
       ss << "unable to parse 'weights' value '"
-         << cmd_vartype_stringify(cmdmap["weights"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("weights")) << "'";
       goto reply;
     }
     pending_inc.new_weight.insert(weights.begin(), weights.end());
@@ -9813,7 +9814,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     int64_t id;
     if (!cmd_getval(cct, cmdmap, "id", id)) {
       ss << "unable to parse osd id value '"
-         << cmd_vartype_stringify(cmdmap["id"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("id")) << "'";
       err = -EINVAL;
       goto reply;
     }
@@ -9865,7 +9866,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     int64_t id;
     if (!cmd_getval(cct, cmdmap, "id", id)) {
       ss << "unable to parse osd id value '"
-         << cmd_vartype_stringify(cmdmap["id"]) << "";
+         << cmd_vartype_stringify(cmdmap.at("id")) << "";
       err = -EINVAL;
       goto reply;
     }
@@ -10842,7 +10843,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
     int64_t size = 0;
     if (!cmd_getval(cct, cmdmap, "size", size)) {
       ss << "unable to parse 'size' value '"
-         << cmd_vartype_stringify(cmdmap["size"]) << "'";
+         << cmd_vartype_stringify(cmdmap.at("size")) << "'";
       err = -EINVAL;
       goto reply;
     }
index 4b7ea27d850b6323c8202174f4d6b12313168e5e..4b52cf5401061f8b46ad4195f23113ba1c9ad9ee 100644 (file)
@@ -484,7 +484,7 @@ public:
 
   bool preprocess_command(MonOpRequestRef op);
   bool prepare_command(MonOpRequestRef op);
-  bool prepare_command_impl(MonOpRequestRef op, map<string,cmd_vartype>& cmdmap);
+  bool prepare_command_impl(MonOpRequestRef op, const cmdmap_t& cmdmap);
 
   int validate_osd_create(
       const int32_t id,
@@ -518,15 +518,15 @@ public:
   int prepare_command_osd_remove(int32_t id);
   int prepare_command_osd_new(
       MonOpRequestRef op,
-      const map<string,cmd_vartype>& cmdmap,
+      const cmdmap_t& cmdmap,
       const map<string,string>& secrets,
       stringstream &ss,
       Formatter *f);
 
-  int prepare_command_pool_set(map<string,cmd_vartype> &cmdmap,
+  int prepare_command_pool_set(const cmdmap_t& cmdmap,
                                stringstream& ss);
   int prepare_command_pool_application(const string &prefix,
-                                       map<string,cmd_vartype> &cmdmap,
+                                       const cmdmap_t& cmdmap,
                                        stringstream& ss);
 
   bool handle_osd_timeouts(const utime_t &now,
index 0876abede7bcf6d8b99d29c33a765d76796d0a0d..c23a130df7d00862c290aef9938c86ac8ae8b51d 100644 (file)
@@ -2925,7 +2925,7 @@ void PGMap::get_health_checks(
 
 int process_pg_map_command(
   const string& orig_prefix,
-  const map<string,cmd_vartype>& orig_cmdmap,
+  const cmdmap_t& orig_cmdmap,
   const PGMap& pg_map,
   const OSDMap& osdmap,
   Formatter *f,
@@ -2933,7 +2933,7 @@ int process_pg_map_command(
   bufferlist *odata)
 {
   string prefix = orig_prefix;
-  map<string,cmd_vartype> cmdmap = orig_cmdmap;
+  auto cmdmap = orig_cmdmap;
 
   // perhaps these would be better in the parsing, but it's weird
   bool primary = false;
index 6f362d99263a3f7f5119015d989bc2f8d6729d63..f97444ca06933689689a299beea267dd301a7a02 100644 (file)
@@ -453,7 +453,7 @@ inline ostream& operator<<(ostream& out, const PGMapDigest& m) {
 
 int process_pg_map_command(
   const string& prefix,
-  const map<string,cmd_vartype>& cmdmap,
+  const cmdmap_t& cmdmap,
   const PGMap& pg_map,
   const OSDMap& osdmap,
   Formatter *f,
index a6a45b16824d6dc3e6f940b7a258f53c65e02a81..ef62173630cc86eabe12b24d78192803db3b6bde 100644 (file)
@@ -1815,7 +1815,7 @@ void OSDService::_queue_for_recovery(
 namespace ceph { 
 namespace osd_cmds { 
 
-int heap(CephContext& cct, cmdmap_t& cmdmap, Formatter& f, std::ostream& os);
+int heap(CephContext& cct, const cmdmap_t& cmdmap, Formatter& f, std::ostream& os);
  
 }} // namespace ceph::osd_cmds
 
@@ -2149,8 +2149,8 @@ class OSDSocketHook : public AdminSocketHook {
   OSD *osd;
 public:
   explicit OSDSocketHook(OSD *o) : osd(o) {}
-  bool call(std::string admin_command, cmdmap_t& cmdmap, std::string format,
-           bufferlist& out) override {
+  bool call(std::string_view admin_command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& out) override {
     stringstream ss;
     bool r = osd->asok_command(admin_command, cmdmap, format, ss);
     out.append(ss);
@@ -2166,8 +2166,8 @@ std::set<int> OSD::get_mapped_pools() {
     return pools;
 }
 
-bool OSD::asok_command(string admin_command, cmdmap_t& cmdmap, string format,
-                      ostream& ss)
+bool OSD::asok_command(std::string_view admin_command, const cmdmap_t& cmdmap,
+                      std::string_view format, ostream& ss)
 {
   Formatter *f = Formatter::create(format, "json-pretty", "json-pretty");
   if (admin_command == "status") {
@@ -2404,15 +2404,15 @@ class TestOpsSocketHook : public AdminSocketHook {
   ObjectStore *store;
 public:
   TestOpsSocketHook(OSDService *s, ObjectStore *st) : service(s), store(st) {}
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format,
-           bufferlist& out) override {
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& out) override {
     stringstream ss;
     test_ops(service, store, command, cmdmap, ss);
     out.append(ss);
     return true;
   }
   void test_ops(OSDService *service, ObjectStore *store,
-               const std::string &command, cmdmap_t& cmdmap, ostream &ss);
+               std::string_view command, const cmdmap_t& cmdmap, ostream &ss);
 
 };
 
@@ -5035,7 +5035,8 @@ void OSD::tick_without_osd_lock()
 //
 //   set_recovery_delay [utime]
 void TestOpsSocketHook::test_ops(OSDService *service, ObjectStore *store,
-     const std::string &command, cmdmap_t& cmdmap, ostream &ss)
+                                std::string_view command,
+                                const cmdmap_t& cmdmap, ostream &ss)
 {
   //Test support
   //Support changing the omap on a single osd by using the Admin Socket to
@@ -5900,7 +5901,7 @@ void OSD::do_command(Connection *con, ceph_tid_t tid, vector<string>& cmd, buffe
 
   dout(20) << "do_command tid " << tid << " " << cmd << dendl;
 
-  map<string, cmd_vartype> cmdmap;
+  cmdmap_t cmdmap;
   string prefix;
   string format;
   string pgidstr;
@@ -9929,7 +9930,8 @@ void OSD::ShardedOpWQ::_enqueue_front(OpQueueItem&& item)
 namespace ceph { 
 namespace osd_cmds { 
 
-int heap(CephContext& cct, cmdmap_t& cmdmap, Formatter& f, std::ostream& os)
+int heap(CephContext& cct, const cmdmap_t& cmdmap, Formatter& f,
+        std::ostream& os)
 {
   if (!ceph_using_tcmalloc()) {
         os << "could not issue heap profiler command -- not using tcmalloc!";
index c6a876ebc1c579ccbbf33900df3df0295e8f94be..ffe1a9e0039dc5a735c091d9e83986c4ab707193 100644 (file)
@@ -1162,7 +1162,8 @@ protected:
   // asok
   friend class OSDSocketHook;
   class OSDSocketHook *asok_hook;
-  bool asok_command(string admin_command, cmdmap_t& cmdmap, string format, ostream& ss);
+  bool asok_command(std::string_view admin_command, const cmdmap_t& cmdmap,
+                   std::string_view format, std::ostream& ss);
 
 public:
   ClassHandler  *class_handler = nullptr;
index 46e38ca676edd8a5f81b47b92767b6301ac2f0fc..6d1dea3ab118f73548bf18b360acb064e6a9946e 100644 (file)
@@ -159,8 +159,8 @@ class Objecter::RequestStateHook : public AdminSocketHook {
   Objecter *m_objecter;
 public:
   explicit RequestStateHook(Objecter *objecter);
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format,
-            bufferlist& out) override;
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& out) override;
 };
 
 /**
@@ -4717,8 +4717,10 @@ Objecter::RequestStateHook::RequestStateHook(Objecter *objecter) :
 {
 }
 
-bool Objecter::RequestStateHook::call(std::string command, cmdmap_t& cmdmap,
-                                     std::string format, bufferlist& out)
+bool Objecter::RequestStateHook::call(std::string_view command,
+                                     const cmdmap_t& cmdmap,
+                                     std::string_view format,
+                                     bufferlist& out)
 {
   Formatter *f = Formatter::create(format, "json-pretty", "json-pretty");
   shared_lock rl(m_objecter->rwlock);
index e7d51823be27634921d13dfa3a32518d68189de4..0a8b4c270a1b164edfc3f7df984263780413e8f0 100644 (file)
@@ -711,8 +711,10 @@ int RGWCoroutinesManagerRegistry::hook_to_admin_command(const string& command)
   return 0;
 }
 
-bool RGWCoroutinesManagerRegistry::call(std::string command, cmdmap_t& cmdmap, std::string format,
-           bufferlist& out) {
+bool RGWCoroutinesManagerRegistry::call(std::string_view command,
+                                        const cmdmap_t& cmdmap,
+                                        std::string_view format,
+                                        bufferlist& out) {
   RWLock::RLocker rl(lock);
   stringstream ss;
   JSONFormatter f;
index f84232875616236f1daa611a964b6dfa16379776..9ccba4b15c36182ac739a898e7a6229378b948aa 100644 (file)
@@ -1,3 +1,6 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
 #ifndef CEPH_RGW_COROUTINE_H
 #define CEPH_RGW_COROUTINE_H
 
@@ -500,9 +503,9 @@ public:
   void remove(RGWCoroutinesManager *mgr);
 
   int hook_to_admin_command(const string& command);
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format,
-           bufferlist& out) override;
-    
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+            std::string_view format, bufferlist& out) override;
+
   void dump(Formatter *f) const;
 };
 
index 9061426b4317628864c2bfc3b74b5bacc3767c4b..64a784d8eaf2acc2feb206c582c1953d2c8cf74f 100644 (file)
@@ -14046,8 +14046,8 @@ int rgw_compression_info_from_attrset(map<string, bufferlist>& attrs, bool& need
   }
 }
 
-bool RGWRados::call(std::string command, cmdmap_t& cmdmap, std::string format,
-                    bufferlist& out)
+bool RGWRados::call(std::string_view command, const cmdmap_t& cmdmap,
+                   std::string_view format, bufferlist& out)
 {
   if (command == "cache list"sv) {
     std::optional<std::string> filter;
@@ -14068,7 +14068,7 @@ bool RGWRados::call(std::string command, cmdmap_t& cmdmap, std::string format,
   } else if (command == "cache inspect"sv) {
     std::unique_ptr<Formatter> f(ceph::Formatter::create(format, "json-pretty"));
     if (f) {
-      const auto& target = boost::get<std::string>(cmdmap["target"]);
+      const auto& target = boost::get<std::string>(cmdmap.at("target"));
       if (call_inspect(target, f.get())) {
         f->flush(out);
         return true;
@@ -14081,7 +14081,7 @@ bool RGWRados::call(std::string command, cmdmap_t& cmdmap, std::string format,
       return false;
     }
   } else if (command == "cache erase"sv) {
-    const auto& target = boost::get<std::string>(cmdmap["target"]);
+    const auto& target = boost::get<std::string>(cmdmap.at("target"));
     if (call_erase(target)) {
       return true;
     } else {
index c77639381285f6eb19bcba08464ba469ecc68b64..0352cceb31ca8c0f3f218044df1e8835659a4016 100644 (file)
@@ -3449,7 +3449,8 @@ private:
                       boost::optional<obj_version> refresh_version);
 public:
 
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format,
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format,
            bufferlist& out) override final;
 
 protected:
index edfbd916c5dfe2856dea577e02506c0edce88e96..3477f072f1c588c9ab371625467269b647eb1b8e 100644 (file)
@@ -193,8 +193,8 @@ string RGWSyncTraceManager::get_active_names()
   return ss.str();
 }
 
-bool RGWSyncTraceManager::call(std::string command, cmdmap_t& cmdmap, std::string format,
-           bufferlist& out) {
+bool RGWSyncTraceManager::call(std::string_view command, const cmdmap_t& cmdmap,
+                               std::string_view format, bufferlist& out) {
 
   bool show_history = (command == "sync trace history");
   bool show_short = (command == "sync trace active_short");
index b1cd5e6b2e234bd0b73d39f33bfa721daebf05c2..8fe9a8a6f837f427980ed35d4420fcf82a53657b 100644 (file)
@@ -1,3 +1,5 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
 #ifndef CEPH_RGW_SYNC_LOG_H
 #define CEPH_RGW_SYNC_LOG_H
 
@@ -129,7 +131,8 @@ public:
   void finish_node(RGWSyncTraceNode *node);
 
   int hook_to_admin_command();
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format, bufferlist& out);
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+            std::string_view format, bufferlist& out) override;
   string get_active_names();
 };
 
index 096893e09466c23d2a5c3eb0641f2f9aa5ae3d52..9fd9ac4012c5ab9d5add284d0b4e1f424c723443 100644 (file)
@@ -115,7 +115,8 @@ TEST(AdminSocket, SendTooLongRequest) {
 }
 
 class MyTest : public AdminSocketHook {
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format, bufferlist& result) override {
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& result) override {
     std::vector<std::string> args;
     cmd_getval(g_ceph_context, cmdmap, "args", args);
     result.append(command);
@@ -147,7 +148,8 @@ TEST(AdminSocket, RegisterCommand) {
 }
 
 class MyTest2 : public AdminSocketHook {
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format, bufferlist& result) override {
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& result) override {
     std::vector<std::string> args;
     cmd_getval(g_ceph_context, cmdmap, "args", args);
     result.append(command);
@@ -200,7 +202,8 @@ public:
 
   BlockingHook() : _lock("BlockingHook::_lock") {}
 
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format, bufferlist& result) override {
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& result) override {
     Mutex::Locker l(_lock);
     _cond.Wait(_lock);
     return true;
index 0e799b704f161449a5d3afd0bc7b5f427c0a53e9..c14965abe40fa5a1a771c788028a7b128dfe8a68 100644 (file)
@@ -103,8 +103,8 @@ public:
     }
   }
 
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format,
-           bufferlist& out) override {
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& out) override {
     Commands::const_iterator i = commands.find(command);
     assert(i != commands.end());
     Formatter *f = Formatter::create(format);
@@ -116,7 +116,8 @@ public:
   }
 
 private:
-  typedef std::map<std::string, ImageDeleterAdminSocketCommand*> Commands;
+  typedef std::map<std::string, ImageDeleterAdminSocketCommand*,
+                  std::less<>> Commands;
   AdminSocket *admin_socket;
   Commands commands;
 };
index 8535bbacff69b91d27e135c36738b6dfd9e4e4fd..c46f15ffdd9ca709443c82cb882f2507822b3a48 100644 (file)
@@ -200,8 +200,8 @@ public:
     commands.clear();
   }
 
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format,
-           bufferlist& out) override {
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& out) override {
     auto i = commands.find(command);
     assert(i != commands.end());
     Formatter *f = Formatter::create(format);
@@ -213,7 +213,8 @@ public:
   }
 
 private:
-  typedef std::map<std::string, ImageReplayerAdminSocketCommand<I> *> Commands;
+  typedef std::map<std::string, ImageReplayerAdminSocketCommand<I>*,
+                  std::less<>> Commands;
 
   AdminSocket *admin_socket;
   Commands commands;
index f3bc77b0950783aaa431f82765419a3ad03f8414..a38d1c03d0cac51f8bb40807c4ac7ee942d44a5d 100644 (file)
@@ -178,8 +178,8 @@ public:
     }
   }
 
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format,
-           bufferlist& out) override {
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& out) override {
     Commands::const_iterator i = commands.find(command);
     assert(i != commands.end());
     Formatter *f = Formatter::create(format);
@@ -191,7 +191,7 @@ public:
   }
 
 private:
-  typedef std::map<std::string, MirrorAdminSocketCommand*> Commands;
+  typedef std::map<std::string, MirrorAdminSocketCommand*, std::less<>> Commands;
 
   AdminSocket *admin_socket;
   Commands commands;
index 93054d5b73c471afe4a9ddf1815cc20e6d4dbf07..b90f1642e3184385add640a245fb68292883a34a 100644 (file)
@@ -192,8 +192,8 @@ public:
     }
   }
 
-  bool call(std::string command, cmdmap_t& cmdmap, std::string format,
-           bufferlist& out) override {
+  bool call(std::string_view command, const cmdmap_t& cmdmap,
+           std::string_view format, bufferlist& out) override {
     Commands::const_iterator i = commands.find(command);
     assert(i != commands.end());
     Formatter *f = Formatter::create(format);
@@ -205,7 +205,8 @@ public:
   }
 
 private:
-  typedef std::map<std::string, PoolReplayerAdminSocketCommand*> Commands;
+  typedef std::map<std::string, PoolReplayerAdminSocketCommand*,
+                  std::less<>> Commands;
 
   AdminSocket *admin_socket;
   Commands commands;