appro:优化输入判断。

This commit is contained in:
taynpg 2025-01-07 14:00:17 +08:00
parent 15668ff112
commit 965be90c1e
2 changed files with 33 additions and 25 deletions

View File

@ -91,25 +91,27 @@ void CClient::run(const std::string& ip, const std::string& port)
continue;
}
auto vec = COfStr::split(cmd_input, " ");
if (vec.size() == 3) {
if (vec[0] == "Update") {
request_update_list(vec[2], std::stoi(vec[1]));
if (vec.size() < 2) {
logger_->error("No matched cmd, May be param size incorrect.");
continue;
}
std::string param(cmd_input);
std::string scmd = param.substr(0, param.find_first_of(" "));
param.erase(0, param.find_first_of(" ") + 1);
if (scmd == "Update") {
request_update_list(param);
continue;
}
if (scmd == "Down") {
down_task(param);
continue;
}
if (scmd == "Up") {
up_task(param);
continue;
}
logger_->error("No matched cmd, May be param size incorrect.");
} else if (vec.size() == 2) {
if (vec[0] == "Down") {
down_task(vec[1]);
continue;
}
if (vec[0] == "Up") {
up_task(cmd_input);
continue;
}
logger_->error("No matched cmd, May be param size incorrect.");
} else {
logger_->error("No matched cmd, May be param size incorrect.");
}
}
client_->disconnect();
thread.join();
@ -152,7 +154,7 @@ bool CClient::down_task(const std::string& param)
return true;
}
bool CClient::up_task(const std::string& cmd)
bool CClient::up_task(const std::string& param)
{
{
@ -165,7 +167,7 @@ bool CClient::up_task(const std::string& cmd)
}
}
auto list = CFileOpr::get_file_list(cmd);
auto list = CFileOpr::get_file_list(param);
std::string msg;
for (const auto& item : list) {
@ -316,8 +318,16 @@ void CClient::report_trans_ret(TransState state, const std::string& key)
*/
bool CClient::request_update_list(const std::string& list_file, int index)
bool CClient::request_update_list(const std::string& param)
{
auto tvec = COfStr::split(param, " ");
if (tvec.size() < 2) {
logger_->error("{} invalid param format [{}]", __FUNCTION__, param);
return false;
}
int index = std::stoi(tvec[0]);
std::string list_file = tvec[1];
if (downloading_) {
logger_->warn("Have Task Downloading, Please wait.....");
return false;
@ -694,9 +704,7 @@ CFileOpr::~CFileOpr()
std::vector<std::string> CFileOpr::get_file_list(const std::string& input)
{
std::vector<std::string> result;
std::string backup = input;
backup.erase(0, backup.find_first_of(" "));
backup = COfStr::trim(backup);
auto backup = COfStr::trim(input);
if (backup.empty()) {
return result;
}

View File

@ -43,11 +43,11 @@ public:
public:
bool get_task_list();
bool down_task(const std::string& param);
bool up_task(const std::string& cmd);
bool up_task(const std::string& param);
bool cancel_task();
bool down_one_file(const std::string& id, const std::string& file, const std::string& local_dir = "");
void report_trans_ret(TransState state, const std::string& key = "");
bool request_update_list(const std::string& list_file, int index);
bool request_update_list(const std::string& param);
bool check_update_list(const std::string& content, std::map<std::string, std::string>& files);
bool down_update_file(std::map<std::string, std::string> files);