Server part of the network protocol. More...
#include "../stdafx.h"#include "../debug.h"#include "../strings_func.h"#include "../date_func.h"#include "network_server.h"#include "network_udp.h"#include "network.h"#include "network_base.h"#include "../console_func.h"#include "../company_base.h"#include "../command_func.h"#include "../saveload/saveload.h"#include "../station_base.h"#include "../genworld.h"#include "../fileio_func.h"#include "../company_func.h"#include "../company_gui.h"#include "../window_func.h"#include "../roadveh.h"#include "../rev.h"#include "table/strings.h"Go to the source code of this file.
Typedefs | |
| typedef NetworkRecvStatus | NetworkServerPacket (NetworkClientSocket *cs, Packet *p) |
Functions | |
| static void | NetworkHandleCommandQueue (NetworkClientSocket *cs) |
| DEF_SERVER_SEND_COMMAND_PARAM() | PACKET_SERVER_CLIENT_INFO (NetworkClientSocket *cs, NetworkClientInfo *ci) |
| DEF_SERVER_SEND_COMMAND (PACKET_SERVER_COMPANY_INFO) | |
| DEF_SERVER_SEND_COMMAND_PARAM() | PACKET_SERVER_ERROR (NetworkClientSocket *cs, NetworkErrorCode error) |
| DEF_SERVER_SEND_COMMAND_PARAM() | PACKET_SERVER_CHECK_NEWGRFS (NetworkClientSocket *cs) |
| DEF_SERVER_SEND_COMMAND_PARAM() | PACKET_SERVER_NEED_PASSWORD (NetworkClientSocket *cs, NetworkPasswordType type) |
| DEF_SERVER_SEND_COMMAND (PACKET_SERVER_WELCOME) | |
| DEF_SERVER_SEND_COMMAND (PACKET_SERVER_WAIT) | |
| DEF_SERVER_SEND_COMMAND (PACKET_SERVER_MAP) | |
| DEF_SERVER_SEND_COMMAND_PARAM() | PACKET_SERVER_JOIN (NetworkClientSocket *cs, ClientID client_id) |
| DEF_SERVER_SEND_COMMAND (PACKET_SERVER_FRAME) | |
| DEF_SERVER_SEND_COMMAND (PACKET_SERVER_SYNC) | |
| DEF_SERVER_SEND_COMMAND_PARAM() | PACKET_SERVER_COMMAND (NetworkClientSocket *cs, const CommandPacket *cp) |
| DEF_SERVER_SEND_COMMAND_PARAM() | PACKET_SERVER_CHAT (NetworkClientSocket *cs, NetworkAction action, ClientID client_id, bool self_send, const char *msg, int64 data) |
| DEF_SERVER_SEND_COMMAND_PARAM() | PACKET_SERVER_ERROR_QUIT (NetworkClientSocket *cs, ClientID client_id, NetworkErrorCode errorno) |
| DEF_SERVER_SEND_COMMAND_PARAM() | PACKET_SERVER_QUIT (NetworkClientSocket *cs, ClientID client_id) |
| DEF_SERVER_SEND_COMMAND (PACKET_SERVER_SHUTDOWN) | |
| DEF_SERVER_SEND_COMMAND (PACKET_SERVER_NEWGAME) | |
| DEF_SERVER_SEND_COMMAND_PARAM() | PACKET_SERVER_RCON (NetworkClientSocket *cs, uint16 colour, const char *command) |
| DEF_SERVER_SEND_COMMAND_PARAM() | PACKET_SERVER_MOVE (NetworkClientSocket *cs, ClientID client_id, CompanyID company_id) |
| DEF_SERVER_SEND_COMMAND_PARAM() | PACKET_SERVER_COMPANY_UPDATE (NetworkClientSocket *cs) |
| DEF_SERVER_SEND_COMMAND (PACKET_SERVER_CONFIG_UPDATE) | |
| DEF_SERVER_RECEIVE_COMMAND (PACKET_CLIENT_COMPANY_INFO) | |
| DEF_SERVER_RECEIVE_COMMAND (PACKET_CLIENT_NEWGRFS_CHECKED) | |
| DEF_SERVER_RECEIVE_COMMAND (PACKET_CLIENT_JOIN) | |
| DEF_SERVER_RECEIVE_COMMAND (PACKET_CLIENT_PASSWORD) | |
| DEF_SERVER_RECEIVE_COMMAND (PACKET_CLIENT_GETMAP) | |
| DEF_SERVER_RECEIVE_COMMAND (PACKET_CLIENT_MAP_OK) | |
| DEF_SERVER_RECEIVE_COMMAND (PACKET_CLIENT_COMMAND) | |
| The client has done a command and wants us to handle it. | |
| DEF_SERVER_RECEIVE_COMMAND (PACKET_CLIENT_ERROR) | |
| DEF_SERVER_RECEIVE_COMMAND (PACKET_CLIENT_QUIT) | |
| DEF_SERVER_RECEIVE_COMMAND (PACKET_CLIENT_ACK) | |
| void | NetworkServerSendChat (NetworkAction action, DestType desttype, int dest, const char *msg, ClientID from_id, int64 data) |
| DEF_SERVER_RECEIVE_COMMAND (PACKET_CLIENT_CHAT) | |
| DEF_SERVER_RECEIVE_COMMAND (PACKET_CLIENT_SET_PASSWORD) | |
| DEF_SERVER_RECEIVE_COMMAND (PACKET_CLIENT_SET_NAME) | |
| DEF_SERVER_RECEIVE_COMMAND (PACKET_CLIENT_RCON) | |
| DEF_SERVER_RECEIVE_COMMAND (PACKET_CLIENT_MOVE) | |
| assert_compile (lengthof(_network_server_packet)==PACKET_END) | |
| void | NetworkPopulateCompanyStats (NetworkCompanyStats *stats) |
| Populate the company stats. | |
| void | NetworkUpdateClientInfo (ClientID client_id) |
| static void | NetworkCheckRestartMap () |
| static void | NetworkAutoCleanCompanies () |
| bool | NetworkFindName (char new_name[NETWORK_CLIENT_NAME_LENGTH]) |
| bool | NetworkServerChangeClientName (ClientID client_id, const char *new_name) |
| Change the client name of the given client. | |
| void | NetworkServer_ReadPackets (NetworkClientSocket *cs) |
| void | NetworkServer_Tick (bool send_frame) |
| void | NetworkServerYearlyLoop () |
| void | NetworkServerMonthlyLoop () |
| void | NetworkServerChangeOwner (Owner current_owner, Owner new_owner) |
| const char * | GetClientIP (NetworkClientInfo *ci) |
| void | NetworkServerShowStatusToConsole () |
| void | NetworkServerSendConfigUpdate () |
| Send Config Update. | |
| void | NetworkServerUpdateCompanyPassworded (CompanyID company_id, bool passworded) |
| void | NetworkServerDoMove (ClientID client_id, CompanyID company_id) |
| Handle the tid-bits of moving a client from one company to another. | |
| void | NetworkServerSendRcon (ClientID client_id, ConsoleColour colour_code, const char *string) |
| void | NetworkServerSendError (ClientID client_id, NetworkErrorCode error) |
| void | NetworkServerKickClient (ClientID client_id) |
| void | NetworkServerBanIP (const char *banip) |
| bool | NetworkCompanyHasClients (CompanyID company) |
Variables | |
| static NetworkServerPacket *const | _network_server_packet [] |
Server part of the network protocol.
Definition in file network_server.cpp.
| DEF_SERVER_RECEIVE_COMMAND | ( | PACKET_CLIENT_COMMAND | ) |
The client has done a command and wants us to handle it.
| *cs | the connected client that has sent the command | |
| *p | the packet in which the command was sent |
Only CMD_COMPANY_CTRL is always allowed, for the rest, playas needs to match the company in the packet. If it doesn't, the client has done something pretty naughty (or a bug), and will be kicked
Definition at line 855 of file network_server.cpp.
References _settings_client, CommandContainer::callback, NetworkClientSocket::client_id, NetworkClientInfo::client_id, CLIENT_ID_SERVER, NetworkClientInfo::client_playas, CommandContainer::cmd, CMD_COMPANY_CTRL, CMD_SERVER, CMD_SPECTATOR, CommandPacket::company, COMPANY_NEW_COMPANY, COMPANY_SPECTATOR, DESTTYPE_CLIENT, CommandPacket::frame, GetCommandFlags(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::GetNumItems(), NetworkSocketHandler::HasClientQuit(), IConsolePrintF(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), NetworkSettings::max_companies, CommandPacket::my_cmd, ClientSettings::network, NETWORK_RECV_STATUS_CONN_LOST, NETWORK_RECV_STATUS_OKAY, NetworkAddCommandQueue(), CommandPacket::next, CommandContainer::p1, CommandContainer::p2, NetworkClientSocket::Recv_Command(), NetworkClientSocket::status, STATUS_DONE_MAP, and STATUS_MAP.
| void NetworkPopulateCompanyStats | ( | NetworkCompanyStats * | stats | ) |
Populate the company stats.
| stats | the stats to update |
Definition at line 1356 of file network_server.cpp.
References FACIL_AIRPORT, FACIL_BUS_STOP, FACIL_DOCK, FACIL_TRAIN, FACIL_TRUCK_STOP, BaseStation::facilities, SpecializedVehicle< RoadVehicle, VEH_ROAD >::From(), RoadVehicle::IsBus(), Vehicle::IsPrimaryVehicle(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), MAX_COMPANIES, NetworkCompanyStats::num_station, NetworkCompanyStats::num_vehicle, BaseStation::owner, BaseVehicle::type, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.
| bool NetworkServerChangeClientName | ( | ClientID | client_id, | |
| const char * | new_name | |||
| ) |
Change the client name of the given client.
| client_id | the client to change the name of | |
| new_name | the new name for the client |
Definition at line 1532 of file network_server.cpp.
References NetworkClientInfo::client_name, lastof, NetworkFindClientInfoFromClientID(), and strecpy().
Handle the tid-bits of moving a client from one company to another.
| client_id | id of the client we want to move. | |
| company_id | id of the company we want to move the client to. |
Definition at line 1749 of file network_server.cpp.
References _network_dedicated, CLIENT_ID_SERVER, NetworkClientInfo::client_playas, COMPANY_SPECTATOR, DESTTYPE_BROADCAST, NetworkFindClientInfoFromClientID(), NetworkFindClientStateFromClientID(), and SetLocalCompany().
Referenced by CompanyWindow::OnClick().
1.6.1