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