룸 내의 유저만 조회 기능 추가
This commit is contained in:
@@ -12,6 +12,7 @@ enum class PacketSet {
|
||||
ROOMJOINREQUEST,
|
||||
ROOMEXITREQUEST,
|
||||
USERSLISTREQUEST,
|
||||
ROOMUSERSLISTREQUEST,
|
||||
DATAPOST,
|
||||
CONTINUE,
|
||||
RESPONSE,
|
||||
@@ -21,6 +22,7 @@ enum class PacketSet {
|
||||
ROOMJOINRESPONSE,
|
||||
ROOMEXITRESPONSE,
|
||||
USERSLISTRESPONSE,
|
||||
ROOMUSERSLISTRESPONSE,
|
||||
INVALID
|
||||
};
|
||||
|
||||
@@ -38,6 +40,7 @@ enum class RequestType : std::uint8_t {
|
||||
ROOM_JOIN,
|
||||
ROOM_EXIT,
|
||||
USERS_LIST,
|
||||
ROOM_USERS_LIST,
|
||||
DATA
|
||||
};
|
||||
|
||||
@@ -142,6 +145,35 @@ public:
|
||||
|
||||
class alignas(4) UsersListRequestPacket : public Packet {};
|
||||
|
||||
class alignas(4) RoomUsersListRequestPacket : public Packet {
|
||||
public:
|
||||
union {
|
||||
struct {
|
||||
PacketCategory packetType;
|
||||
RequestType requestType;
|
||||
DataType dataType;
|
||||
std::uint16_t packetLength;
|
||||
std::uint16_t roomId[4];
|
||||
std::uint8_t data[];
|
||||
} __data;
|
||||
std::uint8_t serialized[1500] = "";
|
||||
};
|
||||
std::uint8_t* convToN() {
|
||||
__data.packetLength = ::htons(__data.packetLength);
|
||||
for (int i = 0; i < 4; i++) {
|
||||
__data.roomId[i] = ::htons(__data.roomId[i]);
|
||||
}
|
||||
return serialized;
|
||||
}
|
||||
std::uint8_t* convToH() {
|
||||
__data.packetLength = ::ntohs(__data.packetLength);
|
||||
for (int i = 0; i < 4; i++) {
|
||||
__data.roomId[i] = ::ntohs(__data.roomId[i]);
|
||||
}
|
||||
return serialized;
|
||||
}
|
||||
};
|
||||
|
||||
class alignas(4) DataPostPacket : public Packet {
|
||||
public:
|
||||
union {
|
||||
|
||||
@@ -151,9 +151,11 @@ public:
|
||||
return;
|
||||
}
|
||||
else {
|
||||
spdlog::error("recv() [{}]", strerror(errno));
|
||||
rootIocpData->event = IOCPEVENT::QUIT;
|
||||
spdlog::debug("Disconnected. [{}]", (std::string)(rootIocpData->socket->remoteAddr));
|
||||
::epoll_ctl(epollfd, EPOLL_CTL_DEL, rootIocpData->socket->sock, NULL);
|
||||
delete rootIocpData;
|
||||
threadPool->enqueueJob(callback, rootIocpData);
|
||||
// delete rootIocpData;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -168,9 +170,11 @@ public:
|
||||
redSize = ptr->socket->recv(ptr->buf + totalRedSize, headerSize - totalRedSize, 0);
|
||||
|
||||
if (redSize == SOCKET_ERROR) {
|
||||
spdlog::error("recv() [{}]", strerror(errno));
|
||||
ptr->event = IOCPEVENT::QUIT;
|
||||
spdlog::debug("Disconnected. [{}]", (std::string)(ptr->socket->remoteAddr));
|
||||
::epoll_ctl(epollfd, EPOLL_CTL_DEL, ptr->socket->sock, NULL);
|
||||
delete ptr;
|
||||
threadPool->enqueueJob(callback, ptr);
|
||||
// delete ptr;
|
||||
return;
|
||||
}
|
||||
else if (redSize == 0) {
|
||||
@@ -198,9 +202,11 @@ public:
|
||||
spdlog::trace("No data to read on {}", tid);
|
||||
return;
|
||||
}
|
||||
spdlog::error("recv() [{}]", strerror(errno));
|
||||
ptr->event = IOCPEVENT::QUIT;
|
||||
spdlog::debug("Disconnected. [{}]", (std::string)(ptr->socket->remoteAddr));
|
||||
::epoll_ctl(epollfd, EPOLL_CTL_DEL, ptr->socket->sock, NULL);
|
||||
delete ptr;
|
||||
threadPool->enqueueJob(callback, ptr);
|
||||
// delete ptr;
|
||||
return;
|
||||
}
|
||||
else if (redSize == 0) {
|
||||
|
||||
Reference in New Issue
Block a user