From b02f091f791149bb59ce090d5e46de76762eb59b Mon Sep 17 00:00:00 2001 From: taynpg Date: Sat, 14 Dec 2024 23:59:13 +0800 Subject: [PATCH] =?UTF-8?q?mem=EF=BC=9A=E5=A4=84=E7=90=86=E5=86=85?= =?UTF-8?q?=E5=AD=98=E6=B3=84=E6=BC=8F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/client.cpp | 4 ++-- net/net_base.h | 2 +- server/server.cpp | 14 ++++---------- server/server.h | 7 +++---- util/util.cpp | 2 +- util/util.h | 1 + 6 files changed, 12 insertions(+), 18 deletions(-) diff --git a/client/client.cpp b/client/client.cpp index 792445d..fba65aa 100644 --- a/client/client.cpp +++ b/client/client.cpp @@ -314,10 +314,10 @@ void CClient::send_file_data_th() std::shared_ptr buf = std::make_shared(); buf->type_ = TYPE_TRANS_FILE; buf->tid_ = str_key; - buf->data_ = new char[1024]{}; + buf->data_ = new char[g_BuffSize]{}; buf->mark_ = 1; while (!feof(t->file_)) { - buf->len_ = fread(buf->data_, 1, 1024, t->file_); + buf->len_ = fread(buf->data_, 1, g_BuffSize, t->file_); if (!send_frame(buf.get())) { logger_->error("send_file_data_th send failed."); return; diff --git a/net/net_base.h b/net/net_base.h index f9d73ca..cb330dd 100644 --- a/net/net_base.h +++ b/net/net_base.h @@ -25,7 +25,7 @@ private: asio::ip::tcp::socket socket_; std::mutex mutex_; CMutBuffer buffer_; - std::array tmp_buf_; + std::array tmp_buf_; ExFun_t fun_; std::string remote_key_; }; \ No newline at end of file diff --git a/server/server.cpp b/server/server.cpp index 06148c8..070275a 100644 --- a/server/server.cpp +++ b/server/server.cpp @@ -85,13 +85,6 @@ void CTcpServer::get_client_list(CFrameBuffer** buf) tbuf->len_ = std::snprintf(tbuf->data_, msg.size() + 1, "%s", msg.data()); } -bool CTcpServer::push_frame(CFrameBuffer* buf) -{ - std::lock_guard lock(buf_mut_); - cache_.push(buf); - return true; -} - void CTcpServer::handle_frame() { CFrameBuffer* buf = nullptr; @@ -100,11 +93,11 @@ void CTcpServer::handle_frame() std::lock_guard lock(buf_mut_); if (!cache_.empty()) { buf = cache_.front(); - cache_.pop(); + cache_.pop_front(); } } if (!buf) { - std::this_thread::sleep_for(std::chrono::milliseconds(100)); + std::this_thread::sleep_for(std::chrono::milliseconds(1)); continue; } @@ -241,7 +234,8 @@ void CTcpServer::th_client(std::shared_ptr socket, const auto* frame = CTransProtocal::parse(cache->buffer_); if (frame) { frame->fid_ = client_key; - push_frame(frame); + std::lock_guard lock(buf_mut_); + cache_.push_back(frame); } } } catch (std::exception& e) { diff --git a/server/server.h b/server/server.h index 269b0d7..ad9a267 100644 --- a/server/server.h +++ b/server/server.h @@ -1,7 +1,7 @@ #pragma once #include #include -#include +#include #include #include #include @@ -10,7 +10,7 @@ using namespace ofen; struct ClientCache { std::shared_ptr socket_; CMutBuffer buffer_{}; - std::array tmp_buf_{}; + std::array tmp_buf_{}; std::string task_{}; std::string time_{}; FrameType cur_type_{TYPE_DEFAULT}; @@ -36,7 +36,6 @@ private: void get_client_list(CFrameBuffer** buf); private: - bool push_frame(CFrameBuffer* buf); void handle_frame(); private: @@ -57,7 +56,7 @@ private: std::map> client_map_; std::map client_threads_; std::mutex cli_mut_; - std::queue cache_; + std::list cache_; std::mutex buf_mut_; std::shared_ptr handle_pool_; std::string server_ip_; diff --git a/util/util.cpp b/util/util.cpp index 851372f..bddcd7e 100644 --- a/util/util.cpp +++ b/util/util.cpp @@ -4,7 +4,7 @@ std::shared_ptr get_logger(const std::string& mark, const std::string& log_file) { - auto file_sink = std::make_shared(log_file, 1024 * 50, 3); + auto file_sink = std::make_shared(log_file, g_BuffSize * 50, 3); auto console_sink = std::make_shared(); file_sink->set_pattern("[%Y-%m-%d %H:%M:%S.%e][%l]: %v"); console_sink->set_color(spdlog::level::level_enum::info, 0xFFFF); diff --git a/util/util.h b/util/util.h index f738d13..e371f1a 100644 --- a/util/util.h +++ b/util/util.h @@ -6,6 +6,7 @@ #include #include +constexpr int g_BuffSize = 102400; enum FrameType : int16_t { TYPE_DEFAULT = 0, TYPE_GET_LIST,