|
|
|
|
@@ -267,18 +267,82 @@ void ClientManager::getUserList() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ClientManager::createRoom(std::string roomName) {
|
|
|
|
|
}
|
|
|
|
|
RoomCreateRequestPacket roomCreateRequestPacket;
|
|
|
|
|
roomCreateRequestPacket.__data.packetType = PacketCategory::PACKET_REQUEST;
|
|
|
|
|
roomCreateRequestPacket.__data.requestType = RequestType::ROOM_CREATE;
|
|
|
|
|
roomCreateRequestPacket.__data.dataType = DataType::BINARY;
|
|
|
|
|
roomCreateRequestPacket.__data.packetLength = roomName.size();
|
|
|
|
|
memcpy(roomCreateRequestPacket.__data.data, roomName.c_str(), roomName.size());
|
|
|
|
|
|
|
|
|
|
void ClientManager::deleteRoom(Snowflake RID) {
|
|
|
|
|
int packetLength = roomCreateRequestPacket.__data.packetLength;
|
|
|
|
|
|
|
|
|
|
data_->recvbytes = data_->sendbytes = 0;
|
|
|
|
|
data_->transferredbytes = 0;
|
|
|
|
|
data_->wsabuf.len = packetLength + 8;
|
|
|
|
|
|
|
|
|
|
roomCreateRequestPacket.convToN();
|
|
|
|
|
memcpy(data_->wsabuf.buf, roomCreateRequestPacket.serialized, packetLength + 8);
|
|
|
|
|
iocp_.send(data_, 1, 0, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ClientManager::getRoomList() {
|
|
|
|
|
RoomListRequestPacket roomListRequestPacket;
|
|
|
|
|
roomListRequestPacket.__data.packetType = PacketCategory::PACKET_REQUEST;
|
|
|
|
|
roomListRequestPacket.__data.requestType = RequestType::ROOM_LIST;
|
|
|
|
|
roomListRequestPacket.__data.dataType = DataType::BINARY;
|
|
|
|
|
roomListRequestPacket.__data.packetLength = 0;
|
|
|
|
|
|
|
|
|
|
int packetLength = roomListRequestPacket.__data.packetLength;
|
|
|
|
|
|
|
|
|
|
data_->recvbytes = data_->sendbytes = 0;
|
|
|
|
|
data_->transferredbytes = 0;
|
|
|
|
|
data_->wsabuf.len = packetLength + 8;
|
|
|
|
|
|
|
|
|
|
roomListRequestPacket.convToN();
|
|
|
|
|
memcpy(data_->wsabuf.buf, roomListRequestPacket.serialized, packetLength + 8);
|
|
|
|
|
iocp_.send(data_, 1, 0, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ClientManager::joinRoom(Snowflake UID, Snowflake RID) {
|
|
|
|
|
RoomJoinRequestPacket roomJoinRequestPacket;
|
|
|
|
|
roomJoinRequestPacket.__data.packetType = PacketCategory::PACKET_REQUEST;
|
|
|
|
|
roomJoinRequestPacket.__data.requestType = RequestType::ROOM_JOIN;
|
|
|
|
|
roomJoinRequestPacket.__data.dataType = DataType::BINARY;
|
|
|
|
|
roomJoinRequestPacket.__data.packetLength = sizeof(Snowflake) * 2;
|
|
|
|
|
memcpy(roomJoinRequestPacket.__data.myId, &UID.snowflake, sizeof(Snowflake));
|
|
|
|
|
memcpy(roomJoinRequestPacket.__data.roomId, &RID.snowflake, sizeof(Snowflake));
|
|
|
|
|
|
|
|
|
|
int packetLength = roomJoinRequestPacket.__data.packetLength;
|
|
|
|
|
|
|
|
|
|
data_->recvbytes = data_->sendbytes = 0;
|
|
|
|
|
data_->transferredbytes = 0;
|
|
|
|
|
data_->wsabuf.len = packetLength + 8;
|
|
|
|
|
roomJoinRequestPacket.convToN();
|
|
|
|
|
memcpy(data_->wsabuf.buf, roomJoinRequestPacket.serialized, packetLength + 8);
|
|
|
|
|
iocp_.send(data_, 1, 0, true);
|
|
|
|
|
inRoom_ = true;
|
|
|
|
|
myRoomID_ = RID;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ClientManager::exitRoom(Snowflake UID, Snowflake RID) {
|
|
|
|
|
RoomExitRequestPacket roomExitRequestPacket;
|
|
|
|
|
roomExitRequestPacket.__data.packetType = PacketCategory::PACKET_REQUEST;
|
|
|
|
|
roomExitRequestPacket.__data.requestType = RequestType::ROOM_EXIT;
|
|
|
|
|
roomExitRequestPacket.__data.dataType = DataType::BINARY;
|
|
|
|
|
roomExitRequestPacket.__data.packetLength = sizeof(Snowflake) * 2;
|
|
|
|
|
memcpy(roomExitRequestPacket.__data.myId, &UID.snowflake, sizeof(Snowflake));
|
|
|
|
|
memcpy(roomExitRequestPacket.__data.roomId, &RID.snowflake, sizeof(Snowflake));
|
|
|
|
|
|
|
|
|
|
int packetLength = roomExitRequestPacket.__data.packetLength;
|
|
|
|
|
|
|
|
|
|
data_->recvbytes = data_->sendbytes = 0;
|
|
|
|
|
data_->transferredbytes = 0;
|
|
|
|
|
data_->wsabuf.len = packetLength + 8;
|
|
|
|
|
|
|
|
|
|
roomExitRequestPacket.convToN();
|
|
|
|
|
memcpy(data_->wsabuf.buf, roomExitRequestPacket.serialized, packetLength + 8);
|
|
|
|
|
iocp_.send(data_, 1, 0, true);
|
|
|
|
|
inRoom_ = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ClientManager::run() {
|
|
|
|
|
|