mirror of https://github.com/OpenTTD/OpenTTD
Codechange: use Pool's counter instead of maintaining our own
parent
23dcb4f4a7
commit
f3e32b2f6a
|
@ -31,9 +31,6 @@
|
||||||
/** Redirection of the (remote) console to the admin. */
|
/** Redirection of the (remote) console to the admin. */
|
||||||
AdminIndex _redirect_console_to_admin = INVALID_ADMIN_ID;
|
AdminIndex _redirect_console_to_admin = INVALID_ADMIN_ID;
|
||||||
|
|
||||||
/** The amount of admins connected. */
|
|
||||||
uint8_t _network_admins_connected = 0;
|
|
||||||
|
|
||||||
/** The pool with sockets/clients. */
|
/** The pool with sockets/clients. */
|
||||||
NetworkAdminSocketPool _networkadminsocket_pool("NetworkAdminSocket");
|
NetworkAdminSocketPool _networkadminsocket_pool("NetworkAdminSocket");
|
||||||
INSTANTIATE_POOL_METHODS(NetworkAdminSocket)
|
INSTANTIATE_POOL_METHODS(NetworkAdminSocket)
|
||||||
|
@ -67,7 +64,6 @@ static_assert(lengthof(_admin_update_type_frequencies) == ADMIN_UPDATE_END);
|
||||||
*/
|
*/
|
||||||
ServerNetworkAdminSocketHandler::ServerNetworkAdminSocketHandler(SOCKET s) : NetworkAdminSocketHandler(s)
|
ServerNetworkAdminSocketHandler::ServerNetworkAdminSocketHandler(SOCKET s) : NetworkAdminSocketHandler(s)
|
||||||
{
|
{
|
||||||
_network_admins_connected++;
|
|
||||||
this->status = ADMIN_STATUS_INACTIVE;
|
this->status = ADMIN_STATUS_INACTIVE;
|
||||||
this->connect_time = std::chrono::steady_clock::now();
|
this->connect_time = std::chrono::steady_clock::now();
|
||||||
}
|
}
|
||||||
|
@ -77,7 +73,6 @@ ServerNetworkAdminSocketHandler::ServerNetworkAdminSocketHandler(SOCKET s) : Net
|
||||||
*/
|
*/
|
||||||
ServerNetworkAdminSocketHandler::~ServerNetworkAdminSocketHandler()
|
ServerNetworkAdminSocketHandler::~ServerNetworkAdminSocketHandler()
|
||||||
{
|
{
|
||||||
_network_admins_connected--;
|
|
||||||
Debug(net, 3, "[admin] '{}' ({}) has disconnected", this->admin_name, this->admin_version);
|
Debug(net, 3, "[admin] '{}' ({}) has disconnected", this->admin_name, this->admin_version);
|
||||||
if (_redirect_console_to_admin == this->index) _redirect_console_to_admin = INVALID_ADMIN_ID;
|
if (_redirect_console_to_admin == this->index) _redirect_console_to_admin = INVALID_ADMIN_ID;
|
||||||
|
|
||||||
|
@ -93,12 +88,7 @@ ServerNetworkAdminSocketHandler::~ServerNetworkAdminSocketHandler()
|
||||||
*/
|
*/
|
||||||
/* static */ bool ServerNetworkAdminSocketHandler::AllowConnection()
|
/* static */ bool ServerNetworkAdminSocketHandler::AllowConnection()
|
||||||
{
|
{
|
||||||
bool accept = _settings_client.network.AdminAuthenticationConfigured() && _network_admins_connected < MAX_ADMINS;
|
return _settings_client.network.AdminAuthenticationConfigured() && ServerNetworkAdminSocketHandler::CanAllocateItem();
|
||||||
/* We can't go over the MAX_ADMINS limit here. However, if we accept
|
|
||||||
* the connection, there has to be space in the pool. */
|
|
||||||
static_assert(NetworkAdminSocketPool::MAX_SIZE == MAX_ADMINS);
|
|
||||||
assert(!accept || ServerNetworkAdminSocketHandler::CanAllocateItem());
|
|
||||||
return accept;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Send the packets for the server sockets. */
|
/** Send the packets for the server sockets. */
|
||||||
|
|
Loading…
Reference in New Issue