아이디 중복방지 일단 서버측 구현?

This commit is contained in:
2025-05-10 00:12:35 +09:00
parent be6ea6e92f
commit 7157e67040

View File

@@ -177,22 +177,36 @@ void ServerManager::processLoginRequestPacket(LoginRequestPacket loginRequestPac
std::string userName( std::string userName(
(char*)loginRequestPacket.__data.data, (char*)loginRequestPacket.__data.data,
loginRequestPacket.__data.packetLength); loginRequestPacket.__data.packetLength);
registerUser(userName, data->socket); if (registerUser(userName, data->socket)) {
LoginResponsePacket loginResponsePacket;
loginResponsePacket.__data.packetType = Chattr::PacketCategory::PACKET_RESPONSE;
loginResponsePacket.__data.requestType = Chattr::RequestType::LOGIN;
loginResponsePacket.__data.dataType = Chattr::DataType::BINARY;
loginResponsePacket.__data.packetLength = sizeof(Chattr::ResponseStatusCode) + sizeof(Snowflake);
loginResponsePacket.__data.responseStatusCode = Chattr::ResponseStatusCode::RES_OK;
Snowflake yourId = userSocket2UID_[data->socket];
::memcpy(loginResponsePacket.__data.yourId, &yourId, sizeof(Snowflake));
LoginResponsePacket loginResponsePacket; loginResponsePacket.convToN();
loginResponsePacket.__data.packetType = Chattr::PacketCategory::PACKET_RESPONSE; memcpy(data->wsabuf.buf, loginResponsePacket.serialized, 18);
loginResponsePacket.__data.requestType = Chattr::RequestType::LOGIN; data->sendbytes = 18;
loginResponsePacket.__data.dataType = Chattr::DataType::BINARY; data->wsabuf.len = 18;
loginResponsePacket.__data.packetLength = sizeof(Chattr::ResponseStatusCode) + sizeof(Snowflake); data->IOCPInstance->send(data, 1, 0);
loginResponsePacket.__data.responseStatusCode = Chattr::ResponseStatusCode::RES_OK; }
Snowflake yourId = userSocket2UID_[data->socket]; else {
::memcpy(loginResponsePacket.__data.yourId, &yourId, sizeof(Snowflake)); LoginResponsePacket loginResponsePacket;
loginResponsePacket.__data.packetType = Chattr::PacketCategory::PACKET_RESPONSE;
loginResponsePacket.__data.requestType = Chattr::RequestType::LOGIN;
loginResponsePacket.__data.dataType = Chattr::DataType::BINARY;
loginResponsePacket.__data.packetLength = sizeof(Chattr::ResponseStatusCode);
loginResponsePacket.__data.responseStatusCode = Chattr::ResponseStatusCode::BAD_REQUEST;
loginResponsePacket.convToN(); loginResponsePacket.convToN();
memcpy(data->wsabuf.buf, loginResponsePacket.serialized, 18); memcpy(data->wsabuf.buf, loginResponsePacket.serialized, 10);
data->sendbytes = 18; data->sendbytes = 10;
data->wsabuf.len = 18; data->wsabuf.len = 10;
data->IOCPInstance->send(data, 1, 0); data->IOCPInstance->send(data, 1, 0);
}
} }
void ServerManager::processRoomCreateRequestPacket(RoomCreateRequestPacket roomCreateRequestPacket, Chattr::IOCPPASSINDATA* data) { void ServerManager::processRoomCreateRequestPacket(RoomCreateRequestPacket roomCreateRequestPacket, Chattr::IOCPPASSINDATA* data) {
@@ -428,6 +442,7 @@ bool ServerManager::registerUser(std::string userName, std::shared_ptr<TCPSocket
userName2ID_[userName] = UID; userName2ID_[userName] = UID;
UID2userSocket_[UID] = sock; UID2userSocket_[UID] = sock;
userSocket2UID_[sock] = UID; userSocket2UID_[sock] = UID;
return true;
} }
void ServerManager::deleteUser(Snowflake UID) { void ServerManager::deleteUser(Snowflake UID) {