mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 22:28:56 +00:00
(svn r20972) -Add: company statistics updates at intervals to remote admins (dihedral)
This commit is contained in:
parent
ca5d9f7002
commit
459514afe4
@ -74,6 +74,7 @@ NetworkRecvStatus NetworkAdminSocketHandler::HandlePacket(Packet *p)
|
|||||||
ADMIN_COMMAND(ADMIN_PACKET_SERVER_COMPANY_UPDATE)
|
ADMIN_COMMAND(ADMIN_PACKET_SERVER_COMPANY_UPDATE)
|
||||||
ADMIN_COMMAND(ADMIN_PACKET_SERVER_COMPANY_REMOVE)
|
ADMIN_COMMAND(ADMIN_PACKET_SERVER_COMPANY_REMOVE)
|
||||||
ADMIN_COMMAND(ADMIN_PACKET_SERVER_COMPANY_ECONOMY)
|
ADMIN_COMMAND(ADMIN_PACKET_SERVER_COMPANY_ECONOMY)
|
||||||
|
ADMIN_COMMAND(ADMIN_PACKET_SERVER_COMPANY_STATS)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (this->HasClientQuit()) {
|
if (this->HasClientQuit()) {
|
||||||
@ -143,5 +144,6 @@ DEFINE_UNAVAILABLE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_INFO)
|
|||||||
DEFINE_UNAVAILABLE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_UPDATE)
|
DEFINE_UNAVAILABLE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_UPDATE)
|
||||||
DEFINE_UNAVAILABLE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_REMOVE)
|
DEFINE_UNAVAILABLE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_REMOVE)
|
||||||
DEFINE_UNAVAILABLE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_ECONOMY)
|
DEFINE_UNAVAILABLE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_ECONOMY)
|
||||||
|
DEFINE_UNAVAILABLE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_STATS)
|
||||||
|
|
||||||
#endif /* ENABLE_NETWORK */
|
#endif /* ENABLE_NETWORK */
|
||||||
|
@ -50,6 +50,7 @@ enum PacketAdminType {
|
|||||||
ADMIN_PACKET_SERVER_COMPANY_UPDATE, ///< The server gives the admin an information update on a company.
|
ADMIN_PACKET_SERVER_COMPANY_UPDATE, ///< The server gives the admin an information update on a company.
|
||||||
ADMIN_PACKET_SERVER_COMPANY_REMOVE, ///< The server tells the admin that a company was removed.
|
ADMIN_PACKET_SERVER_COMPANY_REMOVE, ///< The server tells the admin that a company was removed.
|
||||||
ADMIN_PACKET_SERVER_COMPANY_ECONOMY, ///< The server gives the admin some economy related company information.
|
ADMIN_PACKET_SERVER_COMPANY_ECONOMY, ///< The server gives the admin some economy related company information.
|
||||||
|
ADMIN_PACKET_SERVER_COMPANY_STATS, ///< The server gives the admin some statistics about a company.
|
||||||
|
|
||||||
INVALID_ADMIN_PACKET = 0xFF, ///< An invalid marker for admin packets.
|
INVALID_ADMIN_PACKET = 0xFF, ///< An invalid marker for admin packets.
|
||||||
};
|
};
|
||||||
@ -67,6 +68,7 @@ enum AdminUpdateType {
|
|||||||
ADMIN_UPDATE_CLIENT_INFO, ///< Updates about the information of clients.
|
ADMIN_UPDATE_CLIENT_INFO, ///< Updates about the information of clients.
|
||||||
ADMIN_UPDATE_COMPANY_INFO, ///< Updates about the generic information of companies.
|
ADMIN_UPDATE_COMPANY_INFO, ///< Updates about the generic information of companies.
|
||||||
ADMIN_UPDATE_COMPANY_ECONOMY, ///< Updates about the economy of companies.
|
ADMIN_UPDATE_COMPANY_ECONOMY, ///< Updates about the economy of companies.
|
||||||
|
ADMIN_UPDATE_COMPANY_STATS, ///< Updates about the statistics of companies.
|
||||||
ADMIN_UPDATE_END ///< Must ALWAYS be on the end of this list!! (period)
|
ADMIN_UPDATE_END ///< Must ALWAYS be on the end of this list!! (period)
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -276,6 +278,22 @@ protected:
|
|||||||
*/
|
*/
|
||||||
DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_ECONOMY);
|
DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_ECONOMY);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Company statistics on stations and vehicles:
|
||||||
|
* uint8 ID of the company.
|
||||||
|
* uint16 Number of trains.
|
||||||
|
* uint16 Number of lorries.
|
||||||
|
* uint16 Number of busses.
|
||||||
|
* uint16 Number of planes.
|
||||||
|
* uint16 Number of ships.
|
||||||
|
* uint16 Number of train stations.
|
||||||
|
* uint16 Number of lorry stations.
|
||||||
|
* uint16 Number of bus stops.
|
||||||
|
* uint16 Number of airports and heliports.
|
||||||
|
* uint16 Number of harbours.
|
||||||
|
*/
|
||||||
|
DECLARE_ADMIN_RECEIVE_COMMAND(ADMIN_PACKET_SERVER_COMPANY_STATS);
|
||||||
|
|
||||||
NetworkRecvStatus HandlePacket(Packet *p);
|
NetworkRecvStatus HandlePacket(Packet *p);
|
||||||
public:
|
public:
|
||||||
NetworkRecvStatus CloseConnection(bool error = true);
|
NetworkRecvStatus CloseConnection(bool error = true);
|
||||||
|
@ -44,6 +44,7 @@ static const AdminUpdateFrequency _admin_update_type_frequencies[] = {
|
|||||||
ADMIN_FREQUENCY_POLL | ADMIN_FREQUENCY_AUTOMATIC, ///< ADMIN_UPDATE_CLIENT_INFO
|
ADMIN_FREQUENCY_POLL | ADMIN_FREQUENCY_AUTOMATIC, ///< ADMIN_UPDATE_CLIENT_INFO
|
||||||
ADMIN_FREQUENCY_POLL | ADMIN_FREQUENCY_AUTOMATIC, ///< ADMIN_UPDATE_COMPANY_INFO
|
ADMIN_FREQUENCY_POLL | ADMIN_FREQUENCY_AUTOMATIC, ///< ADMIN_UPDATE_COMPANY_INFO
|
||||||
ADMIN_FREQUENCY_POLL | ADMIN_FREQUENCY_WEEKLY | ADMIN_FREQUENCY_MONTHLY | ADMIN_FREQUENCY_QUARTERLY | ADMIN_FREQUENCY_ANUALLY, ///< ADMIN_UPDATE_COMPANY_ECONOMY
|
ADMIN_FREQUENCY_POLL | ADMIN_FREQUENCY_WEEKLY | ADMIN_FREQUENCY_MONTHLY | ADMIN_FREQUENCY_QUARTERLY | ADMIN_FREQUENCY_ANUALLY, ///< ADMIN_UPDATE_COMPANY_ECONOMY
|
||||||
|
ADMIN_FREQUENCY_POLL | ADMIN_FREQUENCY_WEEKLY | ADMIN_FREQUENCY_MONTHLY | ADMIN_FREQUENCY_QUARTERLY | ADMIN_FREQUENCY_ANUALLY, ///< ADMIN_UPDATE_COMPANY_STATS
|
||||||
};
|
};
|
||||||
assert_compile(lengthof(_admin_update_type_frequencies) == ADMIN_UPDATE_END);
|
assert_compile(lengthof(_admin_update_type_frequencies) == ADMIN_UPDATE_END);
|
||||||
|
|
||||||
@ -354,6 +355,35 @@ NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyEconomy()
|
|||||||
return NETWORK_RECV_STATUS_OKAY;
|
return NETWORK_RECV_STATUS_OKAY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyStats()
|
||||||
|
{
|
||||||
|
/* Fetch the latest version of the stats. */
|
||||||
|
NetworkCompanyStats company_stats[MAX_COMPANIES];
|
||||||
|
NetworkPopulateCompanyStats(company_stats);
|
||||||
|
|
||||||
|
const Company *company;
|
||||||
|
|
||||||
|
/* Go through all the companies. */
|
||||||
|
FOR_ALL_COMPANIES(company) {
|
||||||
|
Packet *p = new Packet(ADMIN_PACKET_SERVER_COMPANY_STATS);
|
||||||
|
|
||||||
|
/* Send the information. */
|
||||||
|
p->Send_uint8(company->index);
|
||||||
|
|
||||||
|
for (uint i = 0; i < NETWORK_VEH_END; i++) {
|
||||||
|
p->Send_uint16(company_stats->num_vehicle[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (uint i = 0; i < NETWORK_VEH_END; i++) {
|
||||||
|
p->Send_uint16(company_stats->num_station[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
this->Send_Packet(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NETWORK_RECV_STATUS_OKAY;
|
||||||
|
}
|
||||||
|
|
||||||
/***********
|
/***********
|
||||||
* Receiving functions
|
* Receiving functions
|
||||||
************/
|
************/
|
||||||
@ -452,6 +482,11 @@ DEF_ADMIN_RECEIVE_COMMAND(Server, ADMIN_PACKET_ADMIN_POLL)
|
|||||||
this->SendCompanyEconomy();
|
this->SendCompanyEconomy();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ADMIN_UPDATE_COMPANY_STATS:
|
||||||
|
/* the admin is requesting company stats. */
|
||||||
|
this->SendCompanyStats();
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
/* An unsupported "poll" update type. */
|
/* An unsupported "poll" update type. */
|
||||||
DEBUG(net, 3, "[admin] Not supported poll %d (%d) from '%s' (%s).", type, d1, this->admin_name, this->admin_version);
|
DEBUG(net, 3, "[admin] Not supported poll %d (%d) from '%s' (%s).", type, d1, this->admin_name, this->admin_version);
|
||||||
@ -609,6 +644,10 @@ void NetworkAdminUpdate(AdminUpdateFrequency freq)
|
|||||||
as->SendCompanyEconomy();
|
as->SendCompanyEconomy();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ADMIN_UPDATE_COMPANY_STATS:
|
||||||
|
as->SendCompanyStats();
|
||||||
|
break;
|
||||||
|
|
||||||
default: NOT_REACHED();
|
default: NOT_REACHED();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,7 @@ public:
|
|||||||
NetworkRecvStatus SendCompanyUpdate(const Company *c);
|
NetworkRecvStatus SendCompanyUpdate(const Company *c);
|
||||||
NetworkRecvStatus SendCompanyRemove(CompanyID company_id, AdminCompanyRemoveReason bcrr);
|
NetworkRecvStatus SendCompanyRemove(CompanyID company_id, AdminCompanyRemoveReason bcrr);
|
||||||
NetworkRecvStatus SendCompanyEconomy();
|
NetworkRecvStatus SendCompanyEconomy();
|
||||||
|
NetworkRecvStatus SendCompanyStats();
|
||||||
|
|
||||||
static void Send();
|
static void Send();
|
||||||
static void AcceptConnection(SOCKET s, const NetworkAddress &address);
|
static void AcceptConnection(SOCKET s, const NetworkAddress &address);
|
||||||
|
Loading…
Reference in New Issue
Block a user