자잘한 버그 픽스
This commit is contained in:
@@ -88,6 +88,4 @@ int main() {
|
|||||||
Chattr::ResponsePacket packet;
|
Chattr::ResponsePacket packet;
|
||||||
sock.recv(&packet.serialized, 10, 0);
|
sock.recv(&packet.serialized, 10, 0);
|
||||||
packet.convToH();
|
packet.convToH();
|
||||||
|
|
||||||
sleep(1000000);
|
|
||||||
}
|
}
|
||||||
@@ -30,7 +30,7 @@ void ServerManager::_IOCPClient(Chattr::ThreadPool* thread, Chattr::IOCPPASSINDA
|
|||||||
case PacketSet::LOGINREQUEST: {
|
case PacketSet::LOGINREQUEST: {
|
||||||
pack.convToN();
|
pack.convToN();
|
||||||
LoginRequestPacket loginRequestPacket;
|
LoginRequestPacket loginRequestPacket;
|
||||||
std::memcpy(&loginRequestPacket.serialized, &pack, 8 + pack.__data.packetLength);
|
std::memcpy(&loginRequestPacket.serialized, &pack, 8 + packetLength);
|
||||||
loginRequestPacket.convToH();
|
loginRequestPacket.convToH();
|
||||||
|
|
||||||
std::string userName(
|
std::string userName(
|
||||||
@@ -44,12 +44,14 @@ void ServerManager::_IOCPClient(Chattr::ThreadPool* thread, Chattr::IOCPPASSINDA
|
|||||||
loginResponsePacket.__data.dataType = Chattr::DataType::TEXT;
|
loginResponsePacket.__data.dataType = Chattr::DataType::TEXT;
|
||||||
loginResponsePacket.__data.packetLength = sizeof(Chattr::ResponseStatusCode) + sizeof(Snowflake);
|
loginResponsePacket.__data.packetLength = sizeof(Chattr::ResponseStatusCode) + sizeof(Snowflake);
|
||||||
loginResponsePacket.__data.responseStatusCode = Chattr::ResponseStatusCode::OK;
|
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();
|
loginResponsePacket.convToN();
|
||||||
memcpy(data->wsabuf.buf, loginResponsePacket.serialized, 16);
|
memcpy(data->wsabuf.buf, loginResponsePacket.serialized, 16);
|
||||||
data->sendbytes = 16;
|
data->sendbytes = 16;
|
||||||
data->transferredbytes = 16;
|
data->transferredbytes = 16;
|
||||||
|
data->wsabuf.len = 16;
|
||||||
data->IOCPInstance->send(data, 1, 0);
|
data->IOCPInstance->send(data, 1, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -61,11 +63,47 @@ void ServerManager::_IOCPClient(Chattr::ThreadPool* thread, Chattr::IOCPPASSINDA
|
|||||||
break;
|
break;
|
||||||
case PacketSet::ROOMEXITREQUEST:
|
case PacketSet::ROOMEXITREQUEST:
|
||||||
break;
|
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;
|
break;
|
||||||
case PacketSet::DATAPOSTTEXT: {
|
case PacketSet::DATAPOSTTEXT: {
|
||||||
pack.convToN();
|
pack.convToN();
|
||||||
std::memcpy(&dataPostPacket.serialized, &pack, 8 + pack.__data.packetLength);
|
std::memcpy(&dataPostPacket.serialized, &pack, 8 + packetLength);
|
||||||
dataPostPacket.convToH();
|
dataPostPacket.convToH();
|
||||||
|
|
||||||
Snowflake destID = {};
|
Snowflake destID = {};
|
||||||
@@ -95,6 +133,7 @@ void ServerManager::_IOCPClient(Chattr::ThreadPool* thread, Chattr::IOCPPASSINDA
|
|||||||
memcpy(data->wsabuf.buf, responsePacket.serialized, 10);
|
memcpy(data->wsabuf.buf, responsePacket.serialized, 10);
|
||||||
data->sendbytes = 10;
|
data->sendbytes = 10;
|
||||||
data->transferredbytes = 10;
|
data->transferredbytes = 10;
|
||||||
|
data->wsabuf.len = 10;
|
||||||
data->IOCPInstance->send(data, 1, 0);
|
data->IOCPInstance->send(data, 1, 0);
|
||||||
|
|
||||||
for (auto dest : destinationSockets) {
|
for (auto dest : destinationSockets) {
|
||||||
@@ -114,6 +153,7 @@ void ServerManager::_IOCPClient(Chattr::ThreadPool* thread, Chattr::IOCPPASSINDA
|
|||||||
memcpy(ptr->wsabuf.buf, dataPostPacket.serialized, packetLength + 6);
|
memcpy(ptr->wsabuf.buf, dataPostPacket.serialized, packetLength + 6);
|
||||||
data->sendbytes = packetLength + 6;
|
data->sendbytes = packetLength + 6;
|
||||||
data->transferredbytes = packetLength + 6;
|
data->transferredbytes = packetLength + 6;
|
||||||
|
data->wsabuf.len = packetLength + 6;
|
||||||
data->IOCPInstance->send(ptr, 1, 0);
|
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);
|
memcpy(data->wsabuf.buf, responsePacket.serialized, 10);
|
||||||
data->sendbytes = 10;
|
data->sendbytes = 10;
|
||||||
data->transferredbytes = 10;
|
data->transferredbytes = 10;
|
||||||
|
data->wsabuf.len = 10;
|
||||||
data->IOCPInstance->send(data, 1, 0);
|
data->IOCPInstance->send(data, 1, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -216,12 +216,14 @@ public:
|
|||||||
};
|
};
|
||||||
std::uint8_t* convToN() {
|
std::uint8_t* convToN() {
|
||||||
__data.packetLength = ::htons(__data.packetLength);
|
__data.packetLength = ::htons(__data.packetLength);
|
||||||
|
__data.responseStatusCode = (ResponseStatusCode)::htons((std::uint16_t)__data.responseStatusCode);
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
__data.yourId[i] = ::htons(__data.yourId[i]);
|
__data.yourId[i] = ::htons(__data.yourId[i]);
|
||||||
return serialized;
|
return serialized;
|
||||||
}
|
}
|
||||||
std::uint8_t* convToH() {
|
std::uint8_t* convToH() {
|
||||||
__data.packetLength = ::ntohs(__data.packetLength);
|
__data.packetLength = ::ntohs(__data.packetLength);
|
||||||
|
__data.responseStatusCode = (ResponseStatusCode)::ntohs((std::uint16_t)__data.responseStatusCode);
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
__data.yourId[i] = ::ntohs(__data.yourId[i]);
|
__data.yourId[i] = ::ntohs(__data.yourId[i]);
|
||||||
return serialized;
|
return serialized;
|
||||||
@@ -244,12 +246,14 @@ public:
|
|||||||
};
|
};
|
||||||
std::uint8_t* convToN() {
|
std::uint8_t* convToN() {
|
||||||
__data.packetLength = ::htons(__data.packetLength);
|
__data.packetLength = ::htons(__data.packetLength);
|
||||||
|
__data.responseStatusCode = (ResponseStatusCode)::htons((std::uint16_t)__data.responseStatusCode);
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
__data.createdRoomId[i] = ::htons(__data.createdRoomId[i]);
|
__data.createdRoomId[i] = ::htons(__data.createdRoomId[i]);
|
||||||
return serialized;
|
return serialized;
|
||||||
}
|
}
|
||||||
std::uint8_t* convToH() {
|
std::uint8_t* convToH() {
|
||||||
__data.packetLength = ::ntohs(__data.packetLength);
|
__data.packetLength = ::ntohs(__data.packetLength);
|
||||||
|
__data.responseStatusCode = (ResponseStatusCode)::ntohs((std::uint16_t)__data.responseStatusCode);
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
__data.createdRoomId[i] = ::ntohs(__data.createdRoomId[i]);
|
__data.createdRoomId[i] = ::ntohs(__data.createdRoomId[i]);
|
||||||
return serialized;
|
return serialized;
|
||||||
@@ -273,6 +277,7 @@ public:
|
|||||||
};
|
};
|
||||||
std::uint8_t* convToN() {
|
std::uint8_t* convToN() {
|
||||||
__data.packetLength = ::htons(__data.packetLength);
|
__data.packetLength = ::htons(__data.packetLength);
|
||||||
|
__data.responseStatusCode = (ResponseStatusCode)::htons((std::uint16_t)__data.responseStatusCode);
|
||||||
__data.roomCount = ::htonl(__data.roomCount);
|
__data.roomCount = ::htonl(__data.roomCount);
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
__data.roomId[i] = ::htons(__data.roomId[i]);
|
__data.roomId[i] = ::htons(__data.roomId[i]);
|
||||||
@@ -280,6 +285,7 @@ public:
|
|||||||
}
|
}
|
||||||
std::uint8_t* convToH() {
|
std::uint8_t* convToH() {
|
||||||
__data.packetLength = ::ntohs(__data.packetLength);
|
__data.packetLength = ::ntohs(__data.packetLength);
|
||||||
|
__data.responseStatusCode = (ResponseStatusCode)::ntohs((std::uint16_t)__data.responseStatusCode);
|
||||||
__data.roomCount = ::ntohl(__data.roomCount);
|
__data.roomCount = ::ntohl(__data.roomCount);
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
__data.roomId[i] = ::ntohs(__data.roomId[i]);
|
__data.roomId[i] = ::ntohs(__data.roomId[i]);
|
||||||
@@ -308,12 +314,14 @@ public:
|
|||||||
};
|
};
|
||||||
std::uint8_t* convToN() {
|
std::uint8_t* convToN() {
|
||||||
__data.packetLength = ::htons(__data.packetLength);
|
__data.packetLength = ::htons(__data.packetLength);
|
||||||
|
__data.responseStatusCode = (ResponseStatusCode)::htons((std::uint16_t)__data.responseStatusCode);
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
__data.userId[i] = ::htons(__data.userId[i]);
|
__data.userId[i] = ::htons(__data.userId[i]);
|
||||||
return serialized;
|
return serialized;
|
||||||
}
|
}
|
||||||
std::uint8_t* convToH() {
|
std::uint8_t* convToH() {
|
||||||
__data.packetLength = ::ntohs(__data.packetLength);
|
__data.packetLength = ::ntohs(__data.packetLength);
|
||||||
|
__data.responseStatusCode = (ResponseStatusCode)::ntohs((std::uint16_t)__data.responseStatusCode);
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
__data.userId[i] = ::ntohs(__data.userId[i]);
|
__data.userId[i] = ::ntohs(__data.userId[i]);
|
||||||
return serialized;
|
return serialized;
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public:
|
|||||||
threadPool->enqueueJob(iocpWather, completionPort_, callback);
|
threadPool->enqueueJob(iocpWather, completionPort_, callback);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
data->transfrredbytes = cbTransfrred;
|
data->transferredbytes = cbTransfrred;
|
||||||
threadPool->enqueueJob(callback, data);
|
threadPool->enqueueJob(callback, data);
|
||||||
threadPool->enqueueJob(iocpWather, completionPort_, callback);
|
threadPool->enqueueJob(iocpWather, completionPort_, callback);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user