일단 클라이언트 코드 채움

This commit is contained in:
2025-05-10 00:08:59 +09:00
parent 20f8c7b29d
commit be6ea6e92f
4 changed files with 73 additions and 6 deletions

View File

@@ -69,7 +69,6 @@ public:
void getUserList(); void getUserList();
void createRoom(std::string roomName); void createRoom(std::string roomName);
void deleteRoom(Snowflake RID);
void getRoomList(); void getRoomList();
void joinRoom(Snowflake UID, Snowflake RID); void joinRoom(Snowflake UID, Snowflake RID);

View File

@@ -267,18 +267,82 @@ void ClientManager::getUserList() {
} }
void ClientManager::createRoom(std::string roomName) { void ClientManager::createRoom(std::string roomName) {
} RoomCreateRequestPacket roomCreateRequestPacket;
roomCreateRequestPacket.__data.packetType = PacketCategory::PACKET_REQUEST;
roomCreateRequestPacket.__data.requestType = RequestType::ROOM_CREATE;
roomCreateRequestPacket.__data.dataType = DataType::BINARY;
roomCreateRequestPacket.__data.packetLength = roomName.size();
memcpy(roomCreateRequestPacket.__data.data, roomName.c_str(), roomName.size());
void ClientManager::deleteRoom(Snowflake RID) { int packetLength = roomCreateRequestPacket.__data.packetLength;
data_->recvbytes = data_->sendbytes = 0;
data_->transferredbytes = 0;
data_->wsabuf.len = packetLength + 8;
roomCreateRequestPacket.convToN();
memcpy(data_->wsabuf.buf, roomCreateRequestPacket.serialized, packetLength + 8);
iocp_.send(data_, 1, 0, true);
} }
void ClientManager::getRoomList() { void ClientManager::getRoomList() {
RoomListRequestPacket roomListRequestPacket;
roomListRequestPacket.__data.packetType = PacketCategory::PACKET_REQUEST;
roomListRequestPacket.__data.requestType = RequestType::ROOM_LIST;
roomListRequestPacket.__data.dataType = DataType::BINARY;
roomListRequestPacket.__data.packetLength = 0;
int packetLength = roomListRequestPacket.__data.packetLength;
data_->recvbytes = data_->sendbytes = 0;
data_->transferredbytes = 0;
data_->wsabuf.len = packetLength + 8;
roomListRequestPacket.convToN();
memcpy(data_->wsabuf.buf, roomListRequestPacket.serialized, packetLength + 8);
iocp_.send(data_, 1, 0, true);
} }
void ClientManager::joinRoom(Snowflake UID, Snowflake RID) { void ClientManager::joinRoom(Snowflake UID, Snowflake RID) {
RoomJoinRequestPacket roomJoinRequestPacket;
roomJoinRequestPacket.__data.packetType = PacketCategory::PACKET_REQUEST;
roomJoinRequestPacket.__data.requestType = RequestType::ROOM_JOIN;
roomJoinRequestPacket.__data.dataType = DataType::BINARY;
roomJoinRequestPacket.__data.packetLength = sizeof(Snowflake) * 2;
memcpy(roomJoinRequestPacket.__data.myId, &UID.snowflake, sizeof(Snowflake));
memcpy(roomJoinRequestPacket.__data.roomId, &RID.snowflake, sizeof(Snowflake));
int packetLength = roomJoinRequestPacket.__data.packetLength;
data_->recvbytes = data_->sendbytes = 0;
data_->transferredbytes = 0;
data_->wsabuf.len = packetLength + 8;
roomJoinRequestPacket.convToN();
memcpy(data_->wsabuf.buf, roomJoinRequestPacket.serialized, packetLength + 8);
iocp_.send(data_, 1, 0, true);
inRoom_ = true;
myRoomID_ = RID;
} }
void ClientManager::exitRoom(Snowflake UID, Snowflake RID) { void ClientManager::exitRoom(Snowflake UID, Snowflake RID) {
RoomExitRequestPacket roomExitRequestPacket;
roomExitRequestPacket.__data.packetType = PacketCategory::PACKET_REQUEST;
roomExitRequestPacket.__data.requestType = RequestType::ROOM_EXIT;
roomExitRequestPacket.__data.dataType = DataType::BINARY;
roomExitRequestPacket.__data.packetLength = sizeof(Snowflake) * 2;
memcpy(roomExitRequestPacket.__data.myId, &UID.snowflake, sizeof(Snowflake));
memcpy(roomExitRequestPacket.__data.roomId, &RID.snowflake, sizeof(Snowflake));
int packetLength = roomExitRequestPacket.__data.packetLength;
data_->recvbytes = data_->sendbytes = 0;
data_->transferredbytes = 0;
data_->wsabuf.len = packetLength + 8;
roomExitRequestPacket.convToN();
memcpy(data_->wsabuf.buf, roomExitRequestPacket.serialized, packetLength + 8);
iocp_.send(data_, 1, 0, true);
inRoom_ = false;
} }
void ClientManager::run() { void ClientManager::run() {

View File

@@ -51,7 +51,7 @@ public:
void processDataPostPacket(DataPostPacket dataPostPacket, IOCPPASSINDATA* data); void processDataPostPacket(DataPostPacket dataPostPacket, IOCPPASSINDATA* data);
void processContinuePacket(ContinuePacket continuePacket, IOCPPASSINDATA* data); void processContinuePacket(ContinuePacket continuePacket, IOCPPASSINDATA* data);
void registerUser(std::string userName, std::shared_ptr<TCPSocket> sock); bool registerUser(std::string userName, std::shared_ptr<TCPSocket> sock);
void deleteUser(Snowflake UID); void deleteUser(Snowflake UID);
std::vector<std::pair<Snowflake, std::string>> getUserList(); std::vector<std::pair<Snowflake, std::string>> getUserList();
@@ -82,7 +82,7 @@ private:
std::unordered_map<std::shared_ptr<TCPSocket>, Snowflake> userSocket2UID_; std::unordered_map<std::shared_ptr<TCPSocket>, Snowflake> userSocket2UID_;
std::unordered_map<Snowflake, std::string> userNames_; std::unordered_map<Snowflake, std::string> userNames_;
std::unordered_map<std::string, Snowflake> userName2ID_;
}; };

View File

@@ -418,10 +418,14 @@ void ServerManager::processContinuePacket(ContinuePacket continuePacket, IOCPPAS
} }
} }
void ServerManager::registerUser(std::string userName, std::shared_ptr<TCPSocket> sock) { bool ServerManager::registerUser(std::string userName, std::shared_ptr<TCPSocket> sock) {
std::lock_guard<std::mutex> lock(resourceMutex_); std::lock_guard<std::mutex> lock(resourceMutex_);
if (userName2ID_.find(userName) != userName2ID_.end()) {
return false;
}
Snowflake UID = GenerateID(); Snowflake UID = GenerateID();
userNames_[UID] = userName; userNames_[UID] = userName;
userName2ID_[userName] = UID;
UID2userSocket_[UID] = sock; UID2userSocket_[UID] = sock;
userSocket2UID_[sock] = UID; userSocket2UID_[sock] = UID;
} }