아이디 중복방지 일단 서버측 구현?
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user