mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2026-07-15 15:19:52 +00:00
Codechange: make AdminUpdateType a scoped enum
This commit is contained in:
committed by
Peter Nelson
parent
bd86fe69c0
commit
412c692afe
+18
-18
@@ -114,11 +114,11 @@ Last updated: 2024-03-26
|
||||
|
||||
Additional debug information can be found with a debug level of `net=3`.
|
||||
|
||||
`ADMIN_UPDATE_DATE` results in the server sending:
|
||||
`AdminUpdateType::Date` results in the server sending:
|
||||
|
||||
- PacketAdminType::ServerDate
|
||||
|
||||
`ADMIN_UPDATE_CLIENT_INFO` results in the server sending:
|
||||
`AdminUpdateType::ClientInfo` results in the server sending:
|
||||
|
||||
- PacketAdminType::ServerClientJoin
|
||||
- PacketAdminType::ServerClientInfo
|
||||
@@ -126,31 +126,31 @@ Last updated: 2024-03-26
|
||||
- PacketAdminType::ServerClientQuit
|
||||
- PacketAdminType::ServerClientError
|
||||
|
||||
`ADMIN_UPDATE_COMPANY_INFO` results in the server sending:
|
||||
`AdminUpdateType::CompanyInfo` results in the server sending:
|
||||
|
||||
- PacketAdminType::ServerCompanyNew
|
||||
- PacketAdminType::ServerCompanyInfo
|
||||
- PacketAdminType::ServerCompanyUpdate
|
||||
- PacketAdminType::ServerCompanyRemove
|
||||
|
||||
`ADMIN_UPDATE_COMPANY_ECONOMY` results in the server sending:
|
||||
`AdminUpdateType::CompanyEconomy` results in the server sending:
|
||||
|
||||
- PacketAdminType::ServerCompanyEconomy
|
||||
|
||||
`ADMIN_UPDATE_COMPANY_STATS` results in the server sending:
|
||||
`AdminUpdateType::CompanyStats` results in the server sending:
|
||||
|
||||
- PacketAdminType::ServerCompanyStatistics
|
||||
|
||||
`ADMIN_UPDATE_CHAT` results in the server sending:
|
||||
`AdminUpdateType::Chat` results in the server sending:
|
||||
|
||||
- PacketAdminType::ServerChat
|
||||
|
||||
`ADMIN_UPDATE_CONSOLE` results in the server sending:
|
||||
`AdminUpdateType::Console` results in the server sending:
|
||||
|
||||
- PacketAdminType::ServerConsole
|
||||
|
||||
|
||||
`ADMIN_UPDATE_CMD_LOGGING` results in the server sending:
|
||||
`AdminUpdateType::CmdLogging` results in the server sending:
|
||||
|
||||
- PacketAdminType::ServerCommandLogging
|
||||
|
||||
@@ -158,17 +158,17 @@ Last updated: 2024-03-26
|
||||
|
||||
Certain `AdminUpdateTypes` can also be polled:
|
||||
|
||||
- ADMIN_UPDATE_DATE
|
||||
- ADMIN_UPDATE_CLIENT_INFO
|
||||
- ADMIN_UPDATE_COMPANY_INFO
|
||||
- ADMIN_UPDATE_COMPANY_ECONOMY
|
||||
- ADMIN_UPDATE_COMPANY_STATS
|
||||
- ADMIN_UPDATE_CMD_NAMES
|
||||
- AdminUpdateType::Date
|
||||
- AdminUpdateType::ClientInfo
|
||||
- AdminUpdateType::CompanyInfo
|
||||
- AdminUpdateType::CompanyEconomy
|
||||
- AdminUpdateType::CompanyStats
|
||||
- AdminUpdateType::CmdNames
|
||||
|
||||
Please note the potential gotcha in the "Certain packet information" section below
|
||||
when using the `ADMIN_POLL` packet.
|
||||
|
||||
`ADMIN_UPDATE_CLIENT_INFO` and `ADMIN_UPDATE_COMPANY_INFO` accept an additional
|
||||
`AdminUpdateType::ClientInfo` and `AdminUpdateType::CompanyInfo` accept an additional
|
||||
parameter. This parameter is used to specify a certain client or company.
|
||||
Setting this parameter to `UINT32_MAX (0xFFFFFFFF)` will tell the server you
|
||||
want to receive updates for all clients or companies.
|
||||
@@ -181,7 +181,7 @@ Last updated: 2024-03-26
|
||||
|
||||
## 4.0) Sending rcon commands
|
||||
|
||||
Rcon runs separate from the `ADMIN_UPDATE_CONSOLE` `AdminUpdateType`. Requesting
|
||||
Rcon runs separate from the `AdminUpdateType::Console` `AdminUpdateType`. Requesting
|
||||
the execution of a remote console command is done with the packet
|
||||
`PacketAdminType::AdminRemoteConsoleCommand`.
|
||||
|
||||
@@ -190,7 +190,7 @@ Last updated: 2024-03-26
|
||||
The server will reply with one or more `PacketAdminType::ServerRemoteConsoleCommand` packets.
|
||||
Finally an `PacketAdminType::AdminRemoteConsoleCommandEnd` packet will be sent. Applications
|
||||
will not receive the answer twice if they have asked for the `AdminUpdateType`
|
||||
`ADMIN_UPDATE_CONSOLE`, as the result is not printed on the servers console
|
||||
`AdminUpdateType::Console`, as the result is not printed on the servers console
|
||||
(just like clients rcon commands).
|
||||
|
||||
Furthermore, sending a `say` command (or any similar command) will not
|
||||
@@ -223,7 +223,7 @@ Last updated: 2024-03-26
|
||||
|
||||
## 5.1) Receiving chat
|
||||
|
||||
Register `ADMIN_UPDATE_CHAT` at `AdminUpdateFrequency::Automatic` to receive chat.
|
||||
Register `AdminUpdateType::Chat` at `AdminUpdateFrequency::Automatic` to receive chat.
|
||||
The application will be able to receive all chat the server can see.
|
||||
|
||||
The configuration option `network.server_admin_chat` specifies whether
|
||||
|
||||
+1
-1
@@ -263,7 +263,7 @@ void DebugReconsiderSendRemoteMessages()
|
||||
bool enable = _settings_client.gui.developer >= 2;
|
||||
|
||||
for (ServerNetworkAdminSocketHandler *as : ServerNetworkAdminSocketHandler::IterateActive()) {
|
||||
if (as->update_frequency[ADMIN_UPDATE_CONSOLE].Test(AdminUpdateFrequency::Automatic)) {
|
||||
if (as->update_frequency[AdminUpdateType::Console].Test(AdminUpdateFrequency::Automatic)) {
|
||||
enable = true;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -77,18 +77,18 @@ enum class AdminStatus : uint8_t {
|
||||
};
|
||||
|
||||
/** Update types an admin can register a frequency for */
|
||||
enum AdminUpdateType : uint8_t {
|
||||
ADMIN_UPDATE_DATE, ///< Updates about the date of the game.
|
||||
ADMIN_UPDATE_CLIENT_INFO, ///< Updates about the information of clients.
|
||||
ADMIN_UPDATE_COMPANY_INFO, ///< Updates about the generic information of companies.
|
||||
ADMIN_UPDATE_COMPANY_ECONOMY, ///< Updates about the economy of companies.
|
||||
ADMIN_UPDATE_COMPANY_STATS, ///< Updates about the statistics of companies.
|
||||
ADMIN_UPDATE_CHAT, ///< The admin would like to have chat messages.
|
||||
ADMIN_UPDATE_CONSOLE, ///< The admin would like to have console messages.
|
||||
ADMIN_UPDATE_CMD_NAMES, ///< The admin would like a list of all DoCommand names.
|
||||
ADMIN_UPDATE_CMD_LOGGING, ///< The admin would like to have DoCommand information.
|
||||
ADMIN_UPDATE_GAMESCRIPT, ///< The admin would like to have gamescript messages.
|
||||
ADMIN_UPDATE_END, ///< Must ALWAYS be on the end of this list!! (period)
|
||||
enum class AdminUpdateType : uint8_t {
|
||||
Date, ///< Updates about the date of the game.
|
||||
ClientInfo, ///< Updates about the information of clients.
|
||||
CompanyInfo, ///< Updates about the generic information of companies.
|
||||
CompanyEconomy, ///< Updates about the economy of companies.
|
||||
CompanyStats, ///< Updates about the statistics of companies.
|
||||
Chat, ///< The admin would like to have chat messages.
|
||||
Console, ///< The admin would like to have console messages.
|
||||
CmdNames, ///< The admin would like a list of all DoCommand names.
|
||||
CmdLogging, ///< The admin would like to have DoCommand information.
|
||||
Gamescript, ///< The admin would like to have gamescript messages.
|
||||
End, ///< Must ALWAYS be on the end of this list!! (period)
|
||||
};
|
||||
|
||||
/** Update frequencies an admin can register. */
|
||||
@@ -151,8 +151,8 @@ protected:
|
||||
* Poll the server for certain updates, an invalid poll (e.g. not existent id) gets silently dropped:
|
||||
* uint8_t #AdminUpdateType the server should answer for, only if #AdminUpdateFrequency::Poll is advertised in the PROTOCOL packet. Note integer type - see "Certain Packet Information" in docs/admin_network.md.
|
||||
* uint32_t ID relevant to the packet type, e.g.
|
||||
* - the client ID for #ADMIN_UPDATE_CLIENT_INFO. Use UINT32_MAX to show all clients.
|
||||
* - the company ID for #ADMIN_UPDATE_COMPANY_INFO. Use UINT32_MAX to show all companies.
|
||||
* - the client ID for #AdminUpdateType::ClientInfo. Use UINT32_MAX to show all clients.
|
||||
* - the company ID for #AdminUpdateType::CompanyInfo. Use UINT32_MAX to show all companies.
|
||||
* @param p The packet that was just received.
|
||||
* @return The state the network should have.
|
||||
*/
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
/** @file network_admin.cpp Server part of the admin network protocol. */
|
||||
|
||||
#include "../stdafx.h"
|
||||
|
||||
#include "../strings_func.h"
|
||||
#include "../timer/timer_game_calendar.h"
|
||||
#include "../timer/timer_game_calendar.h"
|
||||
@@ -45,20 +46,18 @@ static const std::chrono::seconds ADMIN_AUTHORISATION_TIMEOUT{10};
|
||||
|
||||
|
||||
/** Frequencies, which may be registered for a certain update type. */
|
||||
static const AdminUpdateFrequencies _admin_update_type_frequencies[] = {
|
||||
{AdminUpdateFrequency::Poll, AdminUpdateFrequency::Daily, AdminUpdateFrequency::Weekly, AdminUpdateFrequency::Monthly, AdminUpdateFrequency::Quarterly, AdminUpdateFrequency::Annually}, // ADMIN_UPDATE_DATE
|
||||
{AdminUpdateFrequency::Poll, AdminUpdateFrequency::Automatic, }, // ADMIN_UPDATE_CLIENT_INFO
|
||||
{AdminUpdateFrequency::Poll, AdminUpdateFrequency::Automatic, }, // ADMIN_UPDATE_COMPANY_INFO
|
||||
{AdminUpdateFrequency::Poll, AdminUpdateFrequency::Weekly, AdminUpdateFrequency::Monthly, AdminUpdateFrequency::Quarterly, AdminUpdateFrequency::Annually}, // ADMIN_UPDATE_COMPANY_ECONOMY
|
||||
{AdminUpdateFrequency::Poll, AdminUpdateFrequency::Weekly, AdminUpdateFrequency::Monthly, AdminUpdateFrequency::Quarterly, AdminUpdateFrequency::Annually}, // ADMIN_UPDATE_COMPANY_STATS
|
||||
{ AdminUpdateFrequency::Automatic, }, // ADMIN_UPDATE_CHAT
|
||||
{ AdminUpdateFrequency::Automatic, }, // ADMIN_UPDATE_CONSOLE
|
||||
{AdminUpdateFrequency::Poll, }, // ADMIN_UPDATE_CMD_NAMES
|
||||
{ AdminUpdateFrequency::Automatic, }, // ADMIN_UPDATE_CMD_LOGGING
|
||||
{ AdminUpdateFrequency::Automatic, }, // ADMIN_UPDATE_GAMESCRIPT
|
||||
};
|
||||
/** Sanity check. */
|
||||
static_assert(lengthof(_admin_update_type_frequencies) == ADMIN_UPDATE_END);
|
||||
static const EnumIndexArray<AdminUpdateFrequencies, AdminUpdateType, AdminUpdateType::End> _admin_update_type_frequencies{{{
|
||||
{AdminUpdateFrequency::Poll, AdminUpdateFrequency::Daily, AdminUpdateFrequency::Weekly, AdminUpdateFrequency::Monthly, AdminUpdateFrequency::Quarterly, AdminUpdateFrequency::Annually}, // AdminUpdateType::Date
|
||||
{AdminUpdateFrequency::Poll, AdminUpdateFrequency::Automatic, }, // AdminUpdateType::ClientInfo
|
||||
{AdminUpdateFrequency::Poll, AdminUpdateFrequency::Automatic, }, // AdminUpdateType::CompanyInfo
|
||||
{AdminUpdateFrequency::Poll, AdminUpdateFrequency::Weekly, AdminUpdateFrequency::Monthly, AdminUpdateFrequency::Quarterly, AdminUpdateFrequency::Annually}, // AdminUpdateType::CompanyEconomy
|
||||
{AdminUpdateFrequency::Poll, AdminUpdateFrequency::Weekly, AdminUpdateFrequency::Monthly, AdminUpdateFrequency::Quarterly, AdminUpdateFrequency::Annually}, // AdminUpdateType::CompanyStats
|
||||
{ AdminUpdateFrequency::Automatic, }, // AdminUpdateType::Chat
|
||||
{ AdminUpdateFrequency::Automatic, }, // AdminUpdateType::Console
|
||||
{AdminUpdateFrequency::Poll, }, // AdminUpdateType::CmdNames
|
||||
{ AdminUpdateFrequency::Automatic, }, // AdminUpdateType::CmdLogging
|
||||
{ AdminUpdateFrequency::Automatic, }, // AdminUpdateType::Gamescript
|
||||
}}};
|
||||
|
||||
/**
|
||||
* Create a new socket for the server side of the admin network.
|
||||
@@ -80,8 +79,8 @@ ServerNetworkAdminSocketHandler::~ServerNetworkAdminSocketHandler()
|
||||
Debug(net, 3, "[admin] '{}' ({}) has disconnected", this->admin_name, this->admin_version);
|
||||
if (_redirect_console_to_admin == this->index) _redirect_console_to_admin = AdminID::Invalid();
|
||||
|
||||
if (this->update_frequency[ADMIN_UPDATE_CONSOLE].Test(AdminUpdateFrequency::Automatic)) {
|
||||
this->update_frequency[ADMIN_UPDATE_CONSOLE] = {};
|
||||
if (this->update_frequency[AdminUpdateType::Console].Test(AdminUpdateFrequency::Automatic)) {
|
||||
this->update_frequency[AdminUpdateType::Console] = {};
|
||||
DebugReconsiderSendRemoteMessages();
|
||||
}
|
||||
}
|
||||
@@ -160,9 +159,9 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendProtocol()
|
||||
/* announce the protocol version */
|
||||
p->Send_uint8(NETWORK_GAME_ADMIN_VERSION);
|
||||
|
||||
for (AdminUpdateType i : EnumRange(ADMIN_UPDATE_END)) {
|
||||
for (AdminUpdateType i : EnumRange(AdminUpdateType::End)) {
|
||||
p->Send_bool (true);
|
||||
p->Send_uint16(i);
|
||||
p->Send_uint16(to_underlying(i));
|
||||
p->Send_uint16(_admin_update_type_frequencies[i].base());
|
||||
}
|
||||
|
||||
@@ -701,10 +700,10 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::ReceiveAdminUpdateFrequency(P
|
||||
{
|
||||
if (this->status <= AdminStatus::Authenticate) return this->SendError(NetworkErrorCode::NotExpected);
|
||||
|
||||
AdminUpdateType type = (AdminUpdateType)p.Recv_uint16();
|
||||
AdminUpdateType type = static_cast<AdminUpdateType>(p.Recv_uint16());
|
||||
AdminUpdateFrequencies freq = static_cast<AdminUpdateFrequencies>(p.Recv_uint16());
|
||||
|
||||
if (type >= ADMIN_UPDATE_END || !_admin_update_type_frequencies[type].All(freq)) {
|
||||
if (type >= AdminUpdateType::End || !_admin_update_type_frequencies[type].All(freq)) {
|
||||
/* The server does not know of this UpdateType. */
|
||||
Debug(net, 1, "[admin] Not supported update frequency {} ({}) from '{}' ({})", type, freq, this->admin_name, this->admin_version);
|
||||
return this->SendError(NetworkErrorCode::IllegalPacket);
|
||||
@@ -712,7 +711,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::ReceiveAdminUpdateFrequency(P
|
||||
|
||||
this->update_frequency[type] = freq;
|
||||
|
||||
if (type == ADMIN_UPDATE_CONSOLE) DebugReconsiderSendRemoteMessages();
|
||||
if (type == AdminUpdateType::Console) DebugReconsiderSendRemoteMessages();
|
||||
|
||||
return NETWORK_RECV_STATUS_OKAY;
|
||||
}
|
||||
@@ -721,16 +720,16 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::ReceiveAdminPoll(Packet &p)
|
||||
{
|
||||
if (this->status <= AdminStatus::Authenticate) return this->SendError(NetworkErrorCode::NotExpected);
|
||||
|
||||
AdminUpdateType type = (AdminUpdateType)p.Recv_uint8();
|
||||
AdminUpdateType type = static_cast<AdminUpdateType>(p.Recv_uint8());
|
||||
uint32_t d1 = p.Recv_uint32();
|
||||
|
||||
switch (type) {
|
||||
case ADMIN_UPDATE_DATE:
|
||||
case AdminUpdateType::Date:
|
||||
/* The admin is requesting the current date. */
|
||||
this->SendDate();
|
||||
break;
|
||||
|
||||
case ADMIN_UPDATE_CLIENT_INFO:
|
||||
case AdminUpdateType::ClientInfo:
|
||||
/* The admin is requesting client info. */
|
||||
if (d1 == UINT32_MAX) {
|
||||
this->SendClientInfo(nullptr, NetworkClientInfo::GetByClientID(CLIENT_ID_SERVER));
|
||||
@@ -747,7 +746,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::ReceiveAdminPoll(Packet &p)
|
||||
}
|
||||
break;
|
||||
|
||||
case ADMIN_UPDATE_COMPANY_INFO:
|
||||
case AdminUpdateType::CompanyInfo:
|
||||
/* The admin is asking for company info. */
|
||||
if (d1 == UINT32_MAX) {
|
||||
for (const Company *company : Company::Iterate()) {
|
||||
@@ -759,17 +758,17 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::ReceiveAdminPoll(Packet &p)
|
||||
}
|
||||
break;
|
||||
|
||||
case ADMIN_UPDATE_COMPANY_ECONOMY:
|
||||
case AdminUpdateType::CompanyEconomy:
|
||||
/* The admin is requesting economy info. */
|
||||
this->SendCompanyEconomy();
|
||||
break;
|
||||
|
||||
case ADMIN_UPDATE_COMPANY_STATS:
|
||||
case AdminUpdateType::CompanyStats:
|
||||
/* the admin is requesting company stats. */
|
||||
this->SendCompanyStats();
|
||||
break;
|
||||
|
||||
case ADMIN_UPDATE_CMD_NAMES:
|
||||
case AdminUpdateType::CmdNames:
|
||||
/* The admin is requesting the names of DoCommands. */
|
||||
this->SendCmdNames();
|
||||
break;
|
||||
@@ -928,7 +927,7 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::ReceiveAdminAuthenticationRes
|
||||
void NetworkAdminClientInfo(const NetworkClientSocket *cs, bool new_client)
|
||||
{
|
||||
for (ServerNetworkAdminSocketHandler *as : ServerNetworkAdminSocketHandler::IterateActive()) {
|
||||
if (as->update_frequency[ADMIN_UPDATE_CLIENT_INFO].Test(AdminUpdateFrequency::Automatic)) {
|
||||
if (as->update_frequency[AdminUpdateType::ClientInfo].Test(AdminUpdateFrequency::Automatic)) {
|
||||
as->SendClientInfo(cs, cs->GetInfo());
|
||||
if (new_client) {
|
||||
as->SendClientJoin(cs->client_id);
|
||||
@@ -944,7 +943,7 @@ void NetworkAdminClientInfo(const NetworkClientSocket *cs, bool new_client)
|
||||
void NetworkAdminClientUpdate(const NetworkClientInfo *ci)
|
||||
{
|
||||
for (ServerNetworkAdminSocketHandler *as : ServerNetworkAdminSocketHandler::IterateActive()) {
|
||||
if (as->update_frequency[ADMIN_UPDATE_CLIENT_INFO].Test(AdminUpdateFrequency::Automatic)) {
|
||||
if (as->update_frequency[AdminUpdateType::ClientInfo].Test(AdminUpdateFrequency::Automatic)) {
|
||||
as->SendClientUpdate(ci);
|
||||
}
|
||||
}
|
||||
@@ -957,7 +956,7 @@ void NetworkAdminClientUpdate(const NetworkClientInfo *ci)
|
||||
void NetworkAdminClientQuit(ClientID client_id)
|
||||
{
|
||||
for (ServerNetworkAdminSocketHandler *as : ServerNetworkAdminSocketHandler::IterateActive()) {
|
||||
if (as->update_frequency[ADMIN_UPDATE_CLIENT_INFO].Test(AdminUpdateFrequency::Automatic)) {
|
||||
if (as->update_frequency[AdminUpdateType::ClientInfo].Test(AdminUpdateFrequency::Automatic)) {
|
||||
as->SendClientQuit(client_id);
|
||||
}
|
||||
}
|
||||
@@ -971,7 +970,7 @@ void NetworkAdminClientQuit(ClientID client_id)
|
||||
void NetworkAdminClientError(ClientID client_id, NetworkErrorCode error_code)
|
||||
{
|
||||
for (ServerNetworkAdminSocketHandler *as : ServerNetworkAdminSocketHandler::IterateActive()) {
|
||||
if (as->update_frequency[ADMIN_UPDATE_CLIENT_INFO].Test(AdminUpdateFrequency::Automatic)) {
|
||||
if (as->update_frequency[AdminUpdateType::ClientInfo].Test(AdminUpdateFrequency::Automatic)) {
|
||||
as->SendClientError(client_id, error_code);
|
||||
}
|
||||
}
|
||||
@@ -989,7 +988,7 @@ void NetworkAdminCompanyNew(const Company *company)
|
||||
}
|
||||
|
||||
for (ServerNetworkAdminSocketHandler *as : ServerNetworkAdminSocketHandler::IterateActive()) {
|
||||
if (as->update_frequency[ADMIN_UPDATE_COMPANY_INFO] != AdminUpdateFrequency::Automatic) continue;
|
||||
if (as->update_frequency[AdminUpdateType::CompanyInfo] != AdminUpdateFrequency::Automatic) continue;
|
||||
|
||||
as->SendCompanyNew(company->index);
|
||||
as->SendCompanyInfo(company);
|
||||
@@ -1005,7 +1004,7 @@ void NetworkAdminCompanyUpdate(const Company *company)
|
||||
if (company == nullptr) return;
|
||||
|
||||
for (ServerNetworkAdminSocketHandler *as : ServerNetworkAdminSocketHandler::IterateActive()) {
|
||||
if (as->update_frequency[ADMIN_UPDATE_COMPANY_INFO] != AdminUpdateFrequency::Automatic) continue;
|
||||
if (as->update_frequency[AdminUpdateType::CompanyInfo] != AdminUpdateFrequency::Automatic) continue;
|
||||
|
||||
as->SendCompanyUpdate(company);
|
||||
}
|
||||
@@ -1038,7 +1037,7 @@ void NetworkAdminChat(NetworkAction action, NetworkChatDestinationType desttype,
|
||||
if (from_admin) return;
|
||||
|
||||
for (ServerNetworkAdminSocketHandler *as : ServerNetworkAdminSocketHandler::IterateActive()) {
|
||||
if (as->update_frequency[ADMIN_UPDATE_CHAT].Test(AdminUpdateFrequency::Automatic)) {
|
||||
if (as->update_frequency[AdminUpdateType::Chat].Test(AdminUpdateFrequency::Automatic)) {
|
||||
as->SendChat(action, desttype, client_id, msg, data);
|
||||
}
|
||||
}
|
||||
@@ -1063,7 +1062,7 @@ void NetworkServerSendAdminRcon(AdminID admin_index, ExtendedTextColour colour_c
|
||||
void NetworkAdminConsole(std::string_view origin, std::string_view string)
|
||||
{
|
||||
for (ServerNetworkAdminSocketHandler *as : ServerNetworkAdminSocketHandler::IterateActive()) {
|
||||
if (as->update_frequency[ADMIN_UPDATE_CONSOLE].Test(AdminUpdateFrequency::Automatic)) {
|
||||
if (as->update_frequency[AdminUpdateType::Console].Test(AdminUpdateFrequency::Automatic)) {
|
||||
as->SendConsole(origin, string);
|
||||
}
|
||||
}
|
||||
@@ -1076,7 +1075,7 @@ void NetworkAdminConsole(std::string_view origin, std::string_view string)
|
||||
void NetworkAdminGameScript(std::string_view json)
|
||||
{
|
||||
for (ServerNetworkAdminSocketHandler *as : ServerNetworkAdminSocketHandler::IterateActive()) {
|
||||
if (as->update_frequency[ADMIN_UPDATE_GAMESCRIPT].Test(AdminUpdateFrequency::Automatic)) {
|
||||
if (as->update_frequency[AdminUpdateType::Gamescript].Test(AdminUpdateFrequency::Automatic)) {
|
||||
as->SendGameScript(json);
|
||||
}
|
||||
}
|
||||
@@ -1092,7 +1091,7 @@ void NetworkAdminCmdLogging(const NetworkClientSocket *owner, const CommandPacke
|
||||
ClientID client_id = owner == nullptr ? _network_own_client_id : owner->client_id;
|
||||
|
||||
for (ServerNetworkAdminSocketHandler *as : ServerNetworkAdminSocketHandler::IterateActive()) {
|
||||
if (as->update_frequency[ADMIN_UPDATE_CMD_LOGGING].Test(AdminUpdateFrequency::Automatic)) {
|
||||
if (as->update_frequency[AdminUpdateType::CmdLogging].Test(AdminUpdateFrequency::Automatic)) {
|
||||
as->SendCmdLogging(client_id, cp);
|
||||
}
|
||||
}
|
||||
@@ -1115,19 +1114,19 @@ void ServerNetworkAdminSocketHandler::WelcomeAll()
|
||||
void NetworkAdminUpdate(AdminUpdateFrequency freq)
|
||||
{
|
||||
for (ServerNetworkAdminSocketHandler *as : ServerNetworkAdminSocketHandler::IterateActive()) {
|
||||
for (AdminUpdateType i : EnumRange(ADMIN_UPDATE_END)) {
|
||||
for (AdminUpdateType i : EnumRange(AdminUpdateType::End)) {
|
||||
if (as->update_frequency[i].Test(freq)) {
|
||||
/* Update the admin for the required details */
|
||||
switch (i) {
|
||||
case ADMIN_UPDATE_DATE:
|
||||
case AdminUpdateType::Date:
|
||||
as->SendDate();
|
||||
break;
|
||||
|
||||
case ADMIN_UPDATE_COMPANY_ECONOMY:
|
||||
case AdminUpdateType::CompanyEconomy:
|
||||
as->SendCompanyEconomy();
|
||||
break;
|
||||
|
||||
case ADMIN_UPDATE_COMPANY_STATS:
|
||||
case AdminUpdateType::CompanyStats:
|
||||
as->SendCompanyStats();
|
||||
break;
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ protected:
|
||||
NetworkRecvStatus SendAuthRequest();
|
||||
NetworkRecvStatus SendEnableEncryption();
|
||||
public:
|
||||
std::array<AdminUpdateFrequencies, ADMIN_UPDATE_END> update_frequency{}; ///< Admin requested update intervals.
|
||||
EnumIndexArray<AdminUpdateFrequencies, AdminUpdateType, AdminUpdateType::End> update_frequency{}; ///< Admin requested update intervals.
|
||||
std::chrono::steady_clock::time_point connect_time{}; ///< Time of connection.
|
||||
NetworkAddress address{}; ///< Address of the admin.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user