일단 클라이언트 코드 채움
This commit is contained in:
@@ -69,7 +69,6 @@ public:
|
|||||||
void getUserList();
|
void getUserList();
|
||||||
|
|
||||||
void createRoom(std::string roomName);
|
void createRoom(std::string roomName);
|
||||||
void deleteRoom(Snowflake RID);
|
|
||||||
void getRoomList();
|
void getRoomList();
|
||||||
|
|
||||||
void joinRoom(Snowflake UID, Snowflake RID);
|
void joinRoom(Snowflake UID, Snowflake RID);
|
||||||
|
|||||||
@@ -267,18 +267,82 @@ void ClientManager::getUserList() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ClientManager::createRoom(std::string roomName) {
|
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() {
|
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) {
|
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) {
|
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() {
|
void ClientManager::run() {
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public:
|
|||||||
void processDataPostPacket(DataPostPacket dataPostPacket, IOCPPASSINDATA* data);
|
void processDataPostPacket(DataPostPacket dataPostPacket, IOCPPASSINDATA* data);
|
||||||
void processContinuePacket(ContinuePacket continuePacket, IOCPPASSINDATA* data);
|
void processContinuePacket(ContinuePacket continuePacket, IOCPPASSINDATA* data);
|
||||||
|
|
||||||
void registerUser(std::string userName, std::shared_ptr<TCPSocket> sock);
|
bool registerUser(std::string userName, std::shared_ptr<TCPSocket> sock);
|
||||||
void deleteUser(Snowflake UID);
|
void deleteUser(Snowflake UID);
|
||||||
std::vector<std::pair<Snowflake, std::string>> getUserList();
|
std::vector<std::pair<Snowflake, std::string>> getUserList();
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ private:
|
|||||||
std::unordered_map<std::shared_ptr<TCPSocket>, Snowflake> userSocket2UID_;
|
std::unordered_map<std::shared_ptr<TCPSocket>, Snowflake> userSocket2UID_;
|
||||||
|
|
||||||
std::unordered_map<Snowflake, std::string> userNames_;
|
std::unordered_map<Snowflake, std::string> userNames_;
|
||||||
|
std::unordered_map<std::string, Snowflake> userName2ID_;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -418,10 +418,14 @@ void ServerManager::processContinuePacket(ContinuePacket continuePacket, IOCPPAS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerManager::registerUser(std::string userName, std::shared_ptr<TCPSocket> sock) {
|
bool ServerManager::registerUser(std::string userName, std::shared_ptr<TCPSocket> sock) {
|
||||||
std::lock_guard<std::mutex> lock(resourceMutex_);
|
std::lock_guard<std::mutex> lock(resourceMutex_);
|
||||||
|
if (userName2ID_.find(userName) != userName2ID_.end()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
Snowflake UID = GenerateID();
|
Snowflake UID = GenerateID();
|
||||||
userNames_[UID] = userName;
|
userNames_[UID] = userName;
|
||||||
|
userName2ID_[userName] = UID;
|
||||||
UID2userSocket_[UID] = sock;
|
UID2userSocket_[UID] = sock;
|
||||||
userSocket2UID_[sock] = UID;
|
userSocket2UID_[sock] = UID;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user