룸 내의 유저만 조회 기능 추가

This commit is contained in:
2025-05-10 17:40:58 +09:00
parent 91a3cfd9f4
commit 7c382bead0
5 changed files with 131 additions and 21 deletions

View File

@@ -142,6 +142,8 @@ PacketSet ClientManager::packetParser(Packet Packet) {
return PacketSet::ROOMEXITREQUEST;
case RequestType::USERS_LIST:
return PacketSet::USERSLISTREQUEST;
case RequestType::ROOM_USERS_LIST:
return PacketSet::ROOMUSERSLISTREQUEST;
case RequestType::DATA:
return PacketSet::INVALID;
}
@@ -160,6 +162,8 @@ PacketSet ClientManager::packetParser(Packet Packet) {
return PacketSet::ROOMEXITRESPONSE;
case RequestType::USERS_LIST:
return PacketSet::USERSLISTRESPONSE;
case RequestType::ROOM_USERS_LIST:
return PacketSet::ROOMUSERSLISTRESPONSE;
case RequestType::DATA:
return PacketSet::RESPONSE;
default:
@@ -215,7 +219,7 @@ void ClientManager::processUsersListResponsePacket(UsersListResponsePacket users
void ClientManager::processDataPostPacket(DataPostPacket dataPostPacket, IOCPPASSINDATA* data) {
Snowflake sentUserId;
::memcpy(&sentUserId.snowflake, dataPostPacket.__data.destId, sizeof(Snowflake));
::memcpy(&sentUserId.snowflake, dataPostPacket.__data.sourceId, sizeof(Snowflake));
std::string sentUserName = userNames_[sentUserId];
std::string message((char*)dataPostPacket.__data.data, dataPostPacket.__data.packetLength - (sizeof(std::uint16_t) * 5));
@@ -267,21 +271,41 @@ void ClientManager::registerUser(std::string userName) {
}
void ClientManager::getUserList() {
UsersListRequestPacket usersListRequestPacket;
usersListRequestPacket.__data.packetType = PacketCategory::PACKET_REQUEST;
usersListRequestPacket.__data.requestType = RequestType::USERS_LIST;
usersListRequestPacket.__data.dataType = DataType::BINARY;
usersListRequestPacket.__data.packetLength = 0;
if (inRoom_) {
RoomUsersListRequestPacket roomUsersListRequestPacket;
roomUsersListRequestPacket.__data.packetType = PacketCategory::PACKET_REQUEST;
roomUsersListRequestPacket.__data.requestType = RequestType::ROOM_USERS_LIST;
roomUsersListRequestPacket.__data.dataType = DataType::BINARY;
roomUsersListRequestPacket.__data.packetLength = sizeof(Snowflake);
memcpy(roomUsersListRequestPacket.__data.roomId, &myRoomID_.snowflake, sizeof(Snowflake));
int packetLength = usersListRequestPacket.__data.packetLength;
int packetLength = roomUsersListRequestPacket.__data.packetLength;
data_->recvbytes = data_->sendbytes = 0;
data_->transferredbytes = 0;
data_->wsabuf.len = packetLength + 8;
data_->recvbytes = data_->sendbytes = 0;
data_->transferredbytes = 0;
data_->wsabuf.len = packetLength + 8;
usersListRequestPacket.convToN();
memcpy(data_->wsabuf.buf, usersListRequestPacket.serialized, packetLength + 8);
iocp_.send(data_, 1, 0);
roomUsersListRequestPacket.convToN();
memcpy(data_->wsabuf.buf, roomUsersListRequestPacket.serialized, packetLength + 8);
iocp_.send(data_, 1, 0);
}
else {
UsersListRequestPacket usersListRequestPacket;
usersListRequestPacket.__data.packetType = PacketCategory::PACKET_REQUEST;
usersListRequestPacket.__data.requestType = RequestType::USERS_LIST;
usersListRequestPacket.__data.dataType = DataType::BINARY;
usersListRequestPacket.__data.packetLength = 0;
int packetLength = usersListRequestPacket.__data.packetLength;
data_->recvbytes = data_->sendbytes = 0;
data_->transferredbytes = 0;
data_->wsabuf.len = packetLength + 8;
usersListRequestPacket.convToN();
memcpy(data_->wsabuf.buf, usersListRequestPacket.serialized, packetLength + 8);
iocp_.send(data_, 1, 0);
}
}
void ClientManager::createRoom(std::string roomName) {