자잘한 버그 픽스
This commit is contained in:
@@ -88,6 +88,4 @@ int main() {
|
||||
Chattr::ResponsePacket packet;
|
||||
sock.recv(&packet.serialized, 10, 0);
|
||||
packet.convToH();
|
||||
|
||||
sleep(1000000);
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -216,12 +216,14 @@ public:
|
||||
};
|
||||
std::uint8_t* convToN() {
|
||||
__data.packetLength = ::htons(__data.packetLength);
|
||||
__data.responseStatusCode = (ResponseStatusCode)::htons((std::uint16_t)__data.responseStatusCode);
|
||||
for (int i = 0; i < 4; i++)
|
||||
__data.yourId[i] = ::htons(__data.yourId[i]);
|
||||
return serialized;
|
||||
}
|
||||
std::uint8_t* convToH() {
|
||||
__data.packetLength = ::ntohs(__data.packetLength);
|
||||
__data.responseStatusCode = (ResponseStatusCode)::ntohs((std::uint16_t)__data.responseStatusCode);
|
||||
for (int i = 0; i < 4; i++)
|
||||
__data.yourId[i] = ::ntohs(__data.yourId[i]);
|
||||
return serialized;
|
||||
@@ -244,12 +246,14 @@ public:
|
||||
};
|
||||
std::uint8_t* convToN() {
|
||||
__data.packetLength = ::htons(__data.packetLength);
|
||||
__data.responseStatusCode = (ResponseStatusCode)::htons((std::uint16_t)__data.responseStatusCode);
|
||||
for (int i = 0; i < 4; i++)
|
||||
__data.createdRoomId[i] = ::htons(__data.createdRoomId[i]);
|
||||
return serialized;
|
||||
}
|
||||
std::uint8_t* convToH() {
|
||||
__data.packetLength = ::ntohs(__data.packetLength);
|
||||
__data.responseStatusCode = (ResponseStatusCode)::ntohs((std::uint16_t)__data.responseStatusCode);
|
||||
for (int i = 0; i < 4; i++)
|
||||
__data.createdRoomId[i] = ::ntohs(__data.createdRoomId[i]);
|
||||
return serialized;
|
||||
@@ -273,6 +277,7 @@ public:
|
||||
};
|
||||
std::uint8_t* convToN() {
|
||||
__data.packetLength = ::htons(__data.packetLength);
|
||||
__data.responseStatusCode = (ResponseStatusCode)::htons((std::uint16_t)__data.responseStatusCode);
|
||||
__data.roomCount = ::htonl(__data.roomCount);
|
||||
for (int i = 0; i < 4; i++)
|
||||
__data.roomId[i] = ::htons(__data.roomId[i]);
|
||||
@@ -280,6 +285,7 @@ public:
|
||||
}
|
||||
std::uint8_t* convToH() {
|
||||
__data.packetLength = ::ntohs(__data.packetLength);
|
||||
__data.responseStatusCode = (ResponseStatusCode)::ntohs((std::uint16_t)__data.responseStatusCode);
|
||||
__data.roomCount = ::ntohl(__data.roomCount);
|
||||
for (int i = 0; i < 4; i++)
|
||||
__data.roomId[i] = ::ntohs(__data.roomId[i]);
|
||||
@@ -308,12 +314,14 @@ public:
|
||||
};
|
||||
std::uint8_t* convToN() {
|
||||
__data.packetLength = ::htons(__data.packetLength);
|
||||
__data.responseStatusCode = (ResponseStatusCode)::htons((std::uint16_t)__data.responseStatusCode);
|
||||
for (int i = 0; i < 4; i++)
|
||||
__data.userId[i] = ::htons(__data.userId[i]);
|
||||
return serialized;
|
||||
}
|
||||
std::uint8_t* convToH() {
|
||||
__data.packetLength = ::ntohs(__data.packetLength);
|
||||
__data.responseStatusCode = (ResponseStatusCode)::ntohs((std::uint16_t)__data.responseStatusCode);
|
||||
for (int i = 0; i < 4; i++)
|
||||
__data.userId[i] = ::ntohs(__data.userId[i]);
|
||||
return serialized;
|
||||
|
||||
@@ -53,7 +53,7 @@ public:
|
||||
threadPool->enqueueJob(iocpWather, completionPort_, callback);
|
||||
return;
|
||||
}
|
||||
data->transfrredbytes = cbTransfrred;
|
||||
data->transferredbytes = cbTransfrred;
|
||||
threadPool->enqueueJob(callback, data);
|
||||
threadPool->enqueueJob(iocpWather, completionPort_, callback);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user