From 86dd5e36193531e9291c32aeb53c64d976480e3e Mon Sep 17 00:00:00 2001 From: Wang XiangYu Date: Tue, 28 Jul 2020 15:35:02 +0800 Subject: [PATCH] cmd case insensitive (#3042) Signed-off-by: wxyu --- core/src/server/delivery/request/CmdReq.cpp | 39 +++++++++++++-------- core/src/server/delivery/request/CmdReq.h | 9 +++++ 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/core/src/server/delivery/request/CmdReq.cpp b/core/src/server/delivery/request/CmdReq.cpp index ee4c9579..a3100616 100644 --- a/core/src/server/delivery/request/CmdReq.cpp +++ b/core/src/server/delivery/request/CmdReq.cpp @@ -16,6 +16,8 @@ #include "utils/Log.h" #include "utils/TimeRecorder.h" +#include +#include #include #include @@ -23,7 +25,7 @@ namespace milvus { namespace server { CmdReq::CmdReq(const std::shared_ptr& context, const std::string& cmd, std::string& result) - : BaseReq(context, BaseReq::kCmd), cmd_(cmd), result_(result) { + : BaseReq(context, BaseReq::kCmd), origin_cmd_(cmd), cmd_(tolower(cmd)), result_(result) { } BaseReqPtr @@ -54,14 +56,9 @@ CmdReq::OnExecute() { sys_info_inst.GetSysInfoJsonStr(result_); } else if (cmd_ == "build_commit_id") { result_ = LAST_COMMIT_ID; - } else if (cmd_.substr(0, 3) == "GET") { + } else if (cmd_.substr(0, 3) == "get") { try { - std::stringstream ss(cmd_); - std::vector words; - std::string word; - while (std::getline(ss, word, ' ')) { - words.push_back(word); - } + auto words = split(cmd_, ' '); if (words.size() == 2) { result_ = ConfigMgr::GetInstance().Get(words[1]); } @@ -70,14 +67,9 @@ CmdReq::OnExecute() { } catch (...) { stat = Status(SERVER_UNEXPECTED_ERROR, "Unknown exception happened on GET command."); } - } else if (cmd_.substr(0, 3) == "SET") { + } else if (cmd_.substr(0, 3) == "set") { try { - std::stringstream ss(cmd_); - std::vector words; - std::string word; - while (std::getline(ss, word, ' ')) { - words.push_back(word); - } + auto words = split(cmd_, ' '); if (words.size() == 3) { ConfigMgr::GetInstance().Set(words[1], words[2]); } @@ -93,5 +85,22 @@ CmdReq::OnExecute() { return stat; } +std::vector +CmdReq::split(const std::string& src, char delimiter) { + std::stringstream ss(src); + std::vector words; + std::string word; + while (std::getline(ss, word, delimiter)) { + words.push_back(word); + } + return words; +} + +std::string +CmdReq::tolower(std::string s) { + std::transform(s.begin(), s.end(), s.begin(), [](unsigned char c) { return std::tolower(c); }); + return s; +} + } // namespace server } // namespace milvus diff --git a/core/src/server/delivery/request/CmdReq.h b/core/src/server/delivery/request/CmdReq.h index 431b7fa9..851a39e0 100644 --- a/core/src/server/delivery/request/CmdReq.h +++ b/core/src/server/delivery/request/CmdReq.h @@ -15,6 +15,7 @@ #include #include +#include namespace milvus { namespace server { @@ -31,6 +32,14 @@ class CmdReq : public BaseReq { OnExecute() override; private: + static std::vector + split(const std::string& src, char delimiter); + + static std::string + tolower(std::string s); + + private: + const std::string origin_cmd_; const std::string cmd_; std::string& result_; }; -- GitLab