From 20f8c7b29d5ececdb50ba7f5f610e8e54e53882c Mon Sep 17 00:00:00 2001 From: HappyTanuki Date: Fri, 9 May 2025 23:31:25 +0900 Subject: [PATCH] =?UTF-8?q?=EC=99=A0=EC=A7=80=20=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EA=B3=A0=EC=B3=90=EC=A7=90..?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Client/src/ClientManager/ClientManager.cpp | 3 ++- impl/Socket/IOCP.cpp | 2 +- include/Socket/IOCP.hpp | 9 ++++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Client/src/ClientManager/ClientManager.cpp b/Client/src/ClientManager/ClientManager.cpp index 09f841f..9cf0a93 100644 --- a/Client/src/ClientManager/ClientManager.cpp +++ b/Client/src/ClientManager/ClientManager.cpp @@ -364,8 +364,9 @@ void ClientManager::run() { getUserList(); else if (tokens[0] == "/roomlist") getRoomList(); - else if (tokens[0] == "/exit") + else if (tokens[0] == "/exit") { break; + } else if (inRoom_) { std::string message; for (int i = 0; i < tokens.size(); i++) diff --git a/impl/Socket/IOCP.cpp b/impl/Socket/IOCP.cpp index 6875601..69560c2 100644 --- a/impl/Socket/IOCP.cpp +++ b/impl/Socket/IOCP.cpp @@ -16,7 +16,7 @@ IOCP::~IOCP() { void IOCP::destruct() { #ifdef __linux__ uint64_t u = 1; - ::write(epollDetroyerFd_, &u, sizeof(uint64_t)); + ::write(epollDetroyerFd, &u, sizeof(uint64_t)); close(epollfd_); #endif } diff --git a/include/Socket/IOCP.hpp b/include/Socket/IOCP.hpp index 7fd5057..7d169ed 100644 --- a/include/Socket/IOCP.hpp +++ b/include/Socket/IOCP.hpp @@ -253,8 +253,8 @@ public: log::critical("CreateIoCompletionPort()"); #elif __linux__ epollfd_ = ::epoll_create(1); - epollDetroyerFd_ = ::eventfd(0, EFD_NONBLOCK); - ::epoll_ctl(epollfd_, EPOLL_CTL_ADD, epollDetroyerFd_, NULL); + epollDetroyerFd = ::eventfd(0, EFD_NONBLOCK); + ::epoll_ctl(epollfd_, EPOLL_CTL_ADD, epollDetroyerFd, NULL); #endif auto boundFunc = [callback = std::move(callback)](ThreadPool* __IOCPThread, IOCPPASSINDATA* data) mutable { callback(__IOCPThread, data); @@ -285,6 +285,10 @@ public: int recv(IOCPPASSINDATA* data, int bufferCount); int send(IOCPPASSINDATA* data, int bufferCount, int __flags, bool client = false); +#ifdef __linux__ + int epollDetroyerFd = -1; +#endif + private: struct WSAManager wsaManager; ThreadPool* IOCPThread_; @@ -293,7 +297,6 @@ private: HANDLE completionPort_ = INVALID_HANDLE_VALUE; #elif __linux__ int epollfd_ = -1; - int epollDetroyerFd_ = -1; std::unordered_map, std::mutex> writeMutex; std::unordered_map, std::queue> writeBuffer; #endif