|
|
|
@ -84,6 +84,11 @@ public:
|
|
|
|
|
*/
|
|
|
|
|
void SendJoinSuccess(ENetPeer* client, MacAddress mac_address);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Notifies the members that the room is closed,
|
|
|
|
|
*/
|
|
|
|
|
void SendCloseMessage();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Sends the information about the room, along with the list of members
|
|
|
|
|
* to every connected client in the room.
|
|
|
|
@ -159,6 +164,8 @@ void Room::RoomImpl::ServerLoop() {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Close the connection to all members:
|
|
|
|
|
SendCloseMessage();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Room::RoomImpl::StartLoop() {
|
|
|
|
@ -266,6 +273,20 @@ void Room::RoomImpl::SendJoinSuccess(ENetPeer* client, MacAddress mac_address) {
|
|
|
|
|
enet_host_flush(server);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Room::RoomImpl::SendCloseMessage() {
|
|
|
|
|
Packet packet;
|
|
|
|
|
packet << static_cast<MessageID>(IdCloseRoom);
|
|
|
|
|
ENetPacket* enet_packet =
|
|
|
|
|
enet_packet_create(packet.GetData(), packet.GetDataSize(), ENET_PACKET_FLAG_RELIABLE);
|
|
|
|
|
for (auto& member : members) {
|
|
|
|
|
enet_peer_send(member.peer, 0, enet_packet);
|
|
|
|
|
}
|
|
|
|
|
enet_host_flush(server);
|
|
|
|
|
for (auto& member : members) {
|
|
|
|
|
enet_peer_disconnect(member.peer, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Room::RoomImpl::BroadcastRoomInformation() {
|
|
|
|
|
Packet packet;
|
|
|
|
|
packet << static_cast<MessageID>(IdRoomInformation);
|
|
|
|
|