disconnect queue
This commit is contained in:
@@ -136,18 +136,21 @@ void Server::Accept() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Server::UpdateSockets() {
|
void Server::UpdateSockets() {
|
||||||
std::int16_t closedConnexionID = -1;
|
static std::vector<std::int16_t> closeConnexions;
|
||||||
for (auto& connection : m_Connections) {
|
for (auto& connection : m_Connections) {
|
||||||
ServerConnexion& con = connection.second;
|
ServerConnexion& con = connection.second;
|
||||||
if (con.GetSocketStatus() != network::Socket::Status::Connected) {
|
if (con.GetSocketStatus() != network::Socket::Status::Connected) {
|
||||||
closedConnexionID = connection.first;
|
closeConnexions.push_back(connection.first);
|
||||||
} else {
|
} else {
|
||||||
con.UpdateSocket();
|
con.UpdateSocket();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (closedConnexionID != -1) {
|
|
||||||
RemoveConnexion(closedConnexionID);
|
for (auto id : closeConnexions) {
|
||||||
|
RemoveConnexion(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
closeConnexions.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Server::BroadcastPacket(const protocol::Packet* packet) {
|
void Server::BroadcastPacket(const protocol::Packet* packet) {
|
||||||
|
|||||||
Reference in New Issue
Block a user