자잘한 버그 픽스
This commit is contained in:
@@ -30,7 +30,7 @@ void ServerManager::_IOCPClient(Chattr::ThreadPool* thread, Chattr::IOCPPASSINDA
|
||||
case PacketSet::LOGINREQUEST: {
|
||||
pack.convToN();
|
||||
LoginRequestPacket loginRequestPacket;
|
||||
std::memcpy(&loginRequestPacket.serialized, &pack, 8 + pack.__data.packetLength);
|
||||
std::memcpy(&loginRequestPacket.serialized, &pack, 8 + packetLength);
|
||||
loginRequestPacket.convToH();
|
||||
|
||||
std::string userName(
|
||||
@@ -44,12 +44,14 @@ void ServerManager::_IOCPClient(Chattr::ThreadPool* thread, Chattr::IOCPPASSINDA
|
||||
loginResponsePacket.__data.dataType = Chattr::DataType::TEXT;
|
||||
loginResponsePacket.__data.packetLength = sizeof(Chattr::ResponseStatusCode) + sizeof(Snowflake);
|
||||
loginResponsePacket.__data.responseStatusCode = Chattr::ResponseStatusCode::OK;
|
||||
::memcpy(loginResponsePacket.__data.yourId, &userSocket2UID_[data->socket], sizeof(Snowflake));
|
||||
Snowflake yourId = userSocket2UID_[data->socket];
|
||||
::memcpy(loginResponsePacket.__data.yourId, &yourId, sizeof(Snowflake));
|
||||
|
||||
loginResponsePacket.convToN();
|
||||
memcpy(data->wsabuf.buf, loginResponsePacket.serialized, 16);
|
||||
data->sendbytes = 16;
|
||||
data->transferredbytes = 16;
|
||||
data->wsabuf.len = 16;
|
||||
data->IOCPInstance->send(data, 1, 0);
|
||||
}
|
||||
break;
|
||||
@@ -61,11 +63,47 @@ void ServerManager::_IOCPClient(Chattr::ThreadPool* thread, Chattr::IOCPPASSINDA
|
||||
break;
|
||||
case PacketSet::ROOMEXITREQUEST:
|
||||
break;
|
||||
case PacketSet::USERSLISTREQUEST:
|
||||
case PacketSet::USERSLISTREQUEST: {
|
||||
pack.convToN();
|
||||
UsersListRequestPacket usersListRequestPacket;
|
||||
std::memcpy(&usersListRequestPacket.serialized, &pack, 8 + packetLength);
|
||||
usersListRequestPacket.convToH();
|
||||
|
||||
auto usersList = getUserList();
|
||||
|
||||
for (auto user : usersList) {
|
||||
UsersListResponsePacket usersListResponsePacket;
|
||||
usersListResponsePacket.__data.packetType = Chattr::PacketCategory::PACKET_RESPONSE;
|
||||
usersListResponsePacket.__data.requestType = Chattr::RequestType::USERS_LIST;
|
||||
usersListResponsePacket.__data.dataType = Chattr::DataType::BINARY;
|
||||
usersListResponsePacket.__data.packetLength = sizeof(Chattr::ResponseStatusCode) + sizeof(std::uint32_t) + sizeof(Snowflake) + user.second.size();
|
||||
usersListResponsePacket.__data.responseStatusCode = Chattr::ResponseStatusCode::OK;
|
||||
usersListResponsePacket.__data.usersCount = usersList.size();
|
||||
::memcpy(usersListResponsePacket.__data.userId, &user.first, sizeof(Snowflake));
|
||||
::memcpy(usersListResponsePacket.__data.name, user.second.c_str(), user.second.size());
|
||||
|
||||
int sendPacketLength = usersListResponsePacket.__data.packetLength;
|
||||
|
||||
Chattr::IOCPPASSINDATA* ptr = new Chattr::IOCPPASSINDATA;
|
||||
::memset(&ptr->overlapped, 0, sizeof(OVERLAPPED));
|
||||
ptr->socket = data->socket;
|
||||
ptr->recvbytes = ptr->sendbytes = 0;
|
||||
ptr->wsabuf.buf = ptr->buf;
|
||||
ptr->wsabuf.len = 1500;
|
||||
ptr->IOCPInstance = data->IOCPInstance;
|
||||
|
||||
usersListResponsePacket.convToN();
|
||||
memcpy(ptr->wsabuf.buf, usersListResponsePacket.serialized, sendPacketLength + 8);
|
||||
data->sendbytes = sendPacketLength + 8;
|
||||
data->transferredbytes = sendPacketLength + 8;
|
||||
data->wsabuf.len = sendPacketLength + 8;
|
||||
data->IOCPInstance->send(ptr, 1, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PacketSet::DATAPOSTTEXT: {
|
||||
pack.convToN();
|
||||
std::memcpy(&dataPostPacket.serialized, &pack, 8 + pack.__data.packetLength);
|
||||
std::memcpy(&dataPostPacket.serialized, &pack, 8 + packetLength);
|
||||
dataPostPacket.convToH();
|
||||
|
||||
Snowflake destID = {};
|
||||
@@ -95,6 +133,7 @@ void ServerManager::_IOCPClient(Chattr::ThreadPool* thread, Chattr::IOCPPASSINDA
|
||||
memcpy(data->wsabuf.buf, responsePacket.serialized, 10);
|
||||
data->sendbytes = 10;
|
||||
data->transferredbytes = 10;
|
||||
data->wsabuf.len = 10;
|
||||
data->IOCPInstance->send(data, 1, 0);
|
||||
|
||||
for (auto dest : destinationSockets) {
|
||||
@@ -114,6 +153,7 @@ void ServerManager::_IOCPClient(Chattr::ThreadPool* thread, Chattr::IOCPPASSINDA
|
||||
memcpy(ptr->wsabuf.buf, dataPostPacket.serialized, packetLength + 6);
|
||||
data->sendbytes = packetLength + 6;
|
||||
data->transferredbytes = packetLength + 6;
|
||||
data->wsabuf.len = packetLength + 6;
|
||||
data->IOCPInstance->send(ptr, 1, 0);
|
||||
}
|
||||
}
|
||||
@@ -134,6 +174,7 @@ void ServerManager::_IOCPClient(Chattr::ThreadPool* thread, Chattr::IOCPPASSINDA
|
||||
memcpy(data->wsabuf.buf, responsePacket.serialized, 10);
|
||||
data->sendbytes = 10;
|
||||
data->transferredbytes = 10;
|
||||
data->wsabuf.len = 10;
|
||||
data->IOCPInstance->send(data, 1, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user