From 698d51a548f42e4651cba972ae0bc40fb22f388d Mon Sep 17 00:00:00 2001 From: taynpg Date: Tue, 24 Dec 2024 09:46:24 +0800 Subject: [PATCH] =?UTF-8?q?safe=EF=BC=9A=E5=AE=89=E5=85=A8=E6=80=A7?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=EF=BC=8C=E6=9C=8D=E5=8A=A1=E7=AB=AF=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E4=BB=8E=E4=B8=8D=E4=B8=BB=E5=8A=A8=E7=BB=99=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF=E5=8F=91=E9=80=81=E4=BF=A1=E6=81=AF=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E6=B7=BB=E5=8A=A0=E5=AE=A2=E6=88=B7=E7=AB=AF=E4=B8=8A?= =?UTF-8?q?=E7=BA=BF=E6=97=B6=E9=97=B4=E6=9F=A5=E7=9C=8B=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/client.cpp | 8 +++++++- server/server.cpp | 21 +++++++++++---------- server/server.h | 6 ++++-- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/client/client.cpp b/client/client.cpp index 2c2c415..3d853b0 100644 --- a/client/client.cpp +++ b/client/client.cpp @@ -56,6 +56,12 @@ void CClient::run(const std::string& ip, const std::string& port) client_->async_recv(); hearts_ = std::thread([&]() { hearts(); }); std::thread thread([&]() { io_context_.run(); }); + + CFrameBuffer* bf = new CFrameBuffer(); + bf->type_ = TYPE_GET_ID; + send_frame(bf); + delete bf; + logger_->warn("SupportCmd:Get|Up|Down|Cancel|Update"); char line[512]{}; while (std::cin.getline(line, 512)) { @@ -443,7 +449,7 @@ void CClient::handle_frame(CFrameBuffer* buf) task_list_[index]->id = id; } - logger_->debug("***********************************************"); + logger_->debug("**********************************************************"); logger_->info("{}", real); } } diff --git a/server/server.cpp b/server/server.cpp index 5884b6f..31fdaa2 100644 --- a/server/server.cpp +++ b/server/server.cpp @@ -54,7 +54,8 @@ std::vector CTcpServer::get_clients() TaskList t; t.id_ = item.first; t.task_ = item.second->task_; - t.time_ = item.second->time_; + t.task_time_ = item.second->task_time_; + t.online_time_ = item.second->online_time_; result.push_back(t); } return result; @@ -67,7 +68,7 @@ void CTcpServer::get_client_list(CFrameBuffer** buf) std::string msg; int index = 1; for (const auto& item : vec) { - msg.append(fmt::format("[{}][{}][{}]", index, item.id_, item.time_)); + msg.append(fmt::format("[{}][{}][{}][{}]", index, item.id_, item.online_time_, item.task_time_)); auto files = COfStr::split(item.task_, "|"); for (const auto& file : files) { msg.append("\n" + file); @@ -114,7 +115,7 @@ void CTcpServer::trans_data(CFrameBuffer* buf) logger_->info("[{}] UpList. {}", buf->fid_, turn_files_path); if (fcli) { fcli->task_ = files_path; - fcli->time_ = OfUtil::now_time(); + fcli->task_time_ = OfUtil::now_time(); } break; } @@ -122,10 +123,15 @@ void CTcpServer::trans_data(CFrameBuffer* buf) logger_->info("[{}] Cancle Task.", buf->fid_); if (fcli) { fcli->task_.clear(); - fcli->time_.clear(); + fcli->task_time_.clear(); } break; } + case TYPE_GET_ID: { + buf->tid_ = buf->fid_; + send_frame(fcli->socket_, buf); + break; + } case TYPE_JUDGE_ACTIVE: { if (fcli && tcli) { break; @@ -194,6 +200,7 @@ void CTcpServer::accept_client() logger_->info("New connection from {}", client_key); auto cache = std::make_shared(); cache->socket_ = socket; + cache->online_time_ = OfUtil::now_time(); client_map_[client_key] = cache; can = true; } @@ -233,12 +240,6 @@ void CTcpServer::th_client(std::shared_ptr socket, const cache = client_map_[client_key]; } - auto* f = new CFrameBuffer(); - f->type_ = TYPE_GET_ID; - f->tid_ = client_key; - send_frame(socket, f); - delete f; - while (true) { asio::error_code error; size_t length = socket->read_some(asio::buffer(cache->tmp_buf_), error); diff --git a/server/server.h b/server/server.h index e4cfdc0..2529b29 100644 --- a/server/server.h +++ b/server/server.h @@ -12,13 +12,15 @@ struct ClientCache { CMutBuffer buffer_{}; std::array tmp_buf_{}; std::string task_{}; - std::string time_{}; + std::string task_time_{}; + std::string online_time_{}; FrameType cur_type_{TYPE_DEFAULT}; }; struct TaskList { std::string id_{}; std::string task_{}; - std::string time_{}; + std::string task_time_{}; + std::string online_time_{}; }; class CTcpServer