From 25527405d5d0501aae7a68a2fcc9e74bb9119e4a Mon Sep 17 00:00:00 2001 From: HappyTanuki Date: Sat, 10 May 2025 02:04:11 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AE=A4=ED=85=8D=EC=8A=A4=20=EB=B2=94?= =?UTF-8?q?=EC=9C=84(=EC=9E=84=EA=B3=84=20=EC=98=81=EC=97=AD)=20=EC=9E=AC?= =?UTF-8?q?=EC=84=A4=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Server/src/ServerManager/ServerManager.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Server/src/ServerManager/ServerManager.cpp b/Server/src/ServerManager/ServerManager.cpp index 0235568..5f58915 100644 --- a/Server/src/ServerManager/ServerManager.cpp +++ b/Server/src/ServerManager/ServerManager.cpp @@ -180,6 +180,7 @@ PacketSet ServerManager::packetParser(Packet Packet) { } void ServerManager::processLoginRequestPacket(LoginRequestPacket loginRequestPacket, Chattr::IOCPPASSINDATA* data) { + std::unique_lock lock(resourceMutex_); std::string userName( (char*)loginRequestPacket.__data.data, loginRequestPacket.__data.packetLength); @@ -216,6 +217,7 @@ void ServerManager::processLoginRequestPacket(LoginRequestPacket loginRequestPac } void ServerManager::processRoomCreateRequestPacket(RoomCreateRequestPacket roomCreateRequestPacket, Chattr::IOCPPASSINDATA* data) { + std::unique_lock lock(resourceMutex_); std::string roomName( (char*)roomCreateRequestPacket.__data.data, roomCreateRequestPacket.__data.packetLength); @@ -237,6 +239,7 @@ void ServerManager::processRoomCreateRequestPacket(RoomCreateRequestPacket roomC } void ServerManager::processRoomListRequest(RoomListRequestPacket roomListRequestPacket, Chattr::IOCPPASSINDATA* data) { + std::unique_lock lock(resourceMutex_); auto roomsList = getRoomList(); for (auto room : roomsList) { @@ -267,6 +270,7 @@ void ServerManager::processRoomListRequest(RoomListRequestPacket roomListRequest } void ServerManager::processRoomJoinRequestPacket(RoomJoinRequestPacket roomJoinRequestPacket, Chattr::IOCPPASSINDATA* data) { + std::unique_lock lock(resourceMutex_); Snowflake myID, roomID; ::memcpy(&myID.snowflake, roomJoinRequestPacket.__data.myId, sizeof(Snowflake)); ::memcpy(&roomID.snowflake, roomJoinRequestPacket.__data.roomId, sizeof(Snowflake)); @@ -290,6 +294,7 @@ void ServerManager::processRoomJoinRequestPacket(RoomJoinRequestPacket roomJoinR } void ServerManager::processRoomExitRequestPacket(RoomExitRequestPacket roomExitRequestPacket, Chattr::IOCPPASSINDATA* data) { + std::unique_lock lock(resourceMutex_); Snowflake myID, roomID; ::memcpy(&myID.snowflake, roomExitRequestPacket.__data.myId, sizeof(Snowflake)); ::memcpy(&roomID.snowflake, roomExitRequestPacket.__data.roomId, sizeof(Snowflake)); @@ -313,6 +318,7 @@ void ServerManager::processRoomExitRequestPacket(RoomExitRequestPacket roomExitR } void ServerManager::processUsersListRequestPacket(UsersListRequestPacket usersListRequestPacket, Chattr::IOCPPASSINDATA* data) { + std::unique_lock lock(resourceMutex_); auto usersList = getUserList(); for (auto user : usersList) { @@ -343,6 +349,7 @@ void ServerManager::processUsersListRequestPacket(UsersListRequestPacket usersLi } void ServerManager::processDataPostPacket(DataPostPacket dataPostPacket, IOCPPASSINDATA* data) { + std::unique_lock lock(resourceMutex_); Snowflake destID; ::memcpy(&destID.snowflake, dataPostPacket.__data.destId, sizeof(Snowflake)); @@ -391,6 +398,7 @@ void ServerManager::processDataPostPacket(DataPostPacket dataPostPacket, IOCPPAS } void ServerManager::processContinuePacket(ContinuePacket continuePacket, IOCPPASSINDATA* data) { + std::unique_lock lock(resourceMutex_); Snowflake destID; ::memcpy(&destID.snowflake, continuePacket.__data.destId, sizeof(Snowflake)); @@ -439,7 +447,6 @@ void ServerManager::processContinuePacket(ContinuePacket continuePacket, IOCPPAS } bool ServerManager::registerUser(std::string userName, std::shared_ptr sock) { - std::lock_guard lock(resourceMutex_); if (userName2ID_.find(userName) != userName2ID_.end()) { return false; } @@ -452,7 +459,6 @@ bool ServerManager::registerUser(std::string userName, std::shared_ptr lock(resourceMutex_); userNames_.erase(UID); std::shared_ptr sock = UID2userSocket_[UID]; UID2userSocket_.erase(UID); @@ -460,7 +466,6 @@ void ServerManager::deleteUser(Snowflake UID) { } std::vector> ServerManager::getUserList() { - std::lock_guard lock(resourceMutex_); std::vector> userList; userList.reserve(userNames_.size()); @@ -471,7 +476,6 @@ std::vector> ServerManager::getUserList() { } Snowflake ServerManager::createRoom(std::string roomName) { - std::lock_guard lock(resourceMutex_); Snowflake RID = GenerateID(); roomNames_[RID] = roomName; rooms_[RID] = std::unordered_map>(); @@ -479,13 +483,11 @@ Snowflake ServerManager::createRoom(std::string roomName) { } void ServerManager::deleteRoom(Snowflake RID) { - std::lock_guard lock(resourceMutex_); roomNames_.erase(RID); rooms_.erase(RID); } std::vector> ServerManager::getRoomList() { - std::lock_guard lock(resourceMutex_); std::vector> roomList; roomList.reserve(roomNames_.size()); @@ -496,13 +498,11 @@ std::vector> ServerManager::getRoomList() { } void ServerManager::joinRoom(Snowflake UID, Snowflake RID) { - std::lock_guard lock(resourceMutex_); std::shared_ptr sock = UID2userSocket_[UID]; rooms_[RID][UID] = sock; } void ServerManager::exitRoom(Snowflake UID, Snowflake RID) { - std::lock_guard lock(resourceMutex_); rooms_[RID].erase(UID); }