OpenTTD Source 20241224-master-gf74b0cf984
|
Variables and function used internally. More...
#include "network_func.h"
#include "core/tcp_coordinator.h"
#include "core/tcp_game.h"
#include "../command_type.h"
#include "../command_func.h"
#include "../misc/endian_buffer.hpp"
Go to the source code of this file.
Data Structures | |
struct | CommandPacket |
Everything we need to know about a command to be able to execute it. More... | |
Typedefs | |
typedef class ServerNetworkGameSocketHandler | NetworkClientSocket |
Enumerations | |
enum | NetworkJoinStatus { NETWORK_JOIN_STATUS_CONNECTING , NETWORK_JOIN_STATUS_AUTHORIZING , NETWORK_JOIN_STATUS_WAITING , NETWORK_JOIN_STATUS_DOWNLOADING , NETWORK_JOIN_STATUS_PROCESSING , NETWORK_JOIN_STATUS_REGISTERING , NETWORK_JOIN_STATUS_GETTING_COMPANY_INFO , NETWORK_JOIN_STATUS_END } |
Status of the clients during joining. More... | |
Functions | |
void | NetworkQueryServer (const std::string &connection_string) |
Query a server to fetch the game-info. | |
void | GetBindAddresses (NetworkAddressList *addresses, uint16_t port) |
Get the addresses to bind to. | |
struct NetworkGameList * | NetworkAddServer (const std::string &connection_string, bool manually=true, bool never_expire=false) |
Validates an address entered as a string and adds the server to the list. | |
void | NetworkRebuildHostList () |
void | UpdateNetworkGameWindow () |
Update the network new window because a new server is found on the network. | |
void | NetworkDistributeCommands () |
Distribute the commands of ourself and the clients. | |
void | NetworkExecuteLocalCommandQueue () |
Execute all commands on the local command queue that ought to be executed this frame. | |
void | NetworkFreeLocalCommandQueue () |
Free the local command queues. | |
void | NetworkSyncCommandQueue (NetworkClientSocket *cs) |
Sync our local command queue to the command queue of the given socket. | |
void | NetworkReplaceCommandClientId (CommandPacket &cp, ClientID client_id) |
Insert a client ID into the command data in a command packet. | |
void | ShowNetworkError (StringID error_string) |
void | NetworkTextMessage (NetworkAction action, TextColour colour, bool self_send, const std::string &name, const std::string &str="", int64_t data=0, const std::string &data_str="") |
uint | NetworkCalculateLag (const NetworkClientSocket *cs) |
StringID | GetNetworkErrorMsg (NetworkErrorCode err) |
Retrieve the string id of an internal error number. | |
bool | NetworkMakeClientNameUnique (std::string &new_name) |
Check whether a name is unique, and otherwise try to make it unique. | |
std::string_view | ParseCompanyFromConnectionString (const std::string &connection_string, CompanyID *company_id) |
Parse the company part ("#company" postfix) of a connecting string. | |
NetworkAddress | ParseConnectionString (const std::string &connection_string, uint16_t default_port) |
Convert a string containing either "hostname" or "hostname:ip" to a NetworkAddress. | |
std::string | NormalizeConnectionString (const std::string &connection_string, uint16_t default_port) |
Normalize a connection string. | |
void | ClientNetworkEmergencySave () |
Create an emergency savegame when the network connection is lost. | |
Variables | |
uint32_t | _frame_counter_server |
The frame_counter of the server, if in network-mode. | |
uint32_t | _frame_counter_max |
To where we may go with our clients. | |
uint32_t | _frame_counter |
The current frame. | |
uint32_t | _last_sync_frame |
Used in the server to store the last time a sync packet was sent to clients. | |
NetworkAddressList | _broadcast_list |
List of broadcast addresses. | |
uint32_t | _sync_seed_1 |
Seed to compare during sync checks. | |
uint32_t | _sync_frame |
The frame to perform the sync check. | |
bool | _network_first_time |
Whether we have finished joining or not. | |
NetworkJoinStatus | _network_join_status |
The status of joining. | |
uint8_t | _network_join_waiting |
The number of clients waiting in front of us. | |
uint32_t | _network_join_bytes |
The number of bytes we already downloaded. | |
uint32_t | _network_join_bytes_total |
The total number of bytes to download. | |
ConnectionType | _network_server_connection_type |
What type of connection the Game Coordinator detected we are on. | |
std::string | _network_server_invite_code |
Our invite code as indicated by the Game Coordinator. | |
std::string | _network_server_name |
The current name of the server you are on. | |
uint8_t | _network_reconnect |
Reconnect timeout. | |
Variables and function used internally.
Definition in file network_internal.h.
typedef class ServerNetworkGameSocketHandler NetworkClientSocket |
Definition at line 40 of file network_internal.h.
enum NetworkJoinStatus |
Status of the clients during joining.
Definition at line 43 of file network_internal.h.
void ClientNetworkEmergencySave | ( | ) |
Create an emergency savegame when the network connection is lost.
Definition at line 135 of file network_client.cpp.
References DoAutoOrNetsave().
Referenced by ClientNetworkGameSocketHandler::ClientError(), NetworkGameSocketHandler::CloseConnection(), ClientNetworkGameSocketHandler::Receive_SERVER_ERROR(), ClientNetworkGameSocketHandler::Receive_SERVER_NEWGAME(), and ClientNetworkGameSocketHandler::Receive_SERVER_SHUTDOWN().
void GetBindAddresses | ( | NetworkAddressList * | addresses, |
uint16_t | port | ||
) |
Get the addresses to bind to.
addresses | the list to write to. |
port | the port to bind to. |
Definition at line 718 of file network.cpp.
References _network_bind_list.
Referenced by TCPListenHandler< Tsocket, Tfull_packet, Tban_packet >::Listen(), and NetworkUDPInitialize().
StringID GetNetworkErrorMsg | ( | NetworkErrorCode | err | ) |
Retrieve the string id of an internal error number.
err | NetworkErrorCode |
Definition at line 313 of file network.cpp.
References lengthof.
Referenced by ServerNetworkGameSocketHandler::Receive_CLIENT_ERROR(), ClientNetworkGameSocketHandler::Receive_SERVER_ERROR_QUIT(), ServerNetworkAdminSocketHandler::SendError(), and ServerNetworkGameSocketHandler::SendError().
struct NetworkGameList * NetworkAddServer | ( | const std::string & | connection_string, |
bool | manually, | ||
bool | never_expire | ||
) |
Validates an address entered as a string and adds the server to the list.
If you use this function, the games will be marked as manually added.
connection_string | The IP:port of the server to add. |
manually | Whether the enter should be marked as manual added. |
never_expire | Whether the entry can expire (removed when no longer found in the public listing). |
Definition at line 692 of file network.cpp.
References ClearGRFConfigList(), NetworkServerGameInfo::grfconfig, NetworkGameList::info, NetworkGameList::manually, NetworkGameListAddItem(), NetworkQueryServer(), NetworkServerGameInfo::server_name, UpdateNetworkGameWindow(), and NetworkGameList::version.
Referenced by NetworkGameWindow::OnQueryTextFinished(), and ClientNetworkUDPSocketHandler::Receive_SERVER_RESPONSE().
uint NetworkCalculateLag | ( | const NetworkClientSocket * | cs | ) |
Definition at line 287 of file network.cpp.
void NetworkDistributeCommands | ( | ) |
Distribute the commands of ourself and the clients.
Definition at line 346 of file network_command.cpp.
References _local_wait_queue, and DistributeQueue().
void NetworkExecuteLocalCommandQueue | ( | ) |
Execute all commands on the local command queue that ought to be executed this frame.
Definition at line 40 of file network_command.cpp.
void NetworkFreeLocalCommandQueue | ( | ) |
Free the local command queues.
Definition at line 279 of file network_command.cpp.
References _local_execution_queue, and _local_wait_queue.
bool NetworkMakeClientNameUnique | ( | std::string & | name | ) |
Check whether a name is unique, and otherwise try to make it unique.
new_name | The name to check/modify. |
Definition at line 1614 of file network_server.cpp.
References CLIENT_ID_SERVER, NetworkClientInfo::client_name, NetworkClientInfo::GetByClientID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_networkclientinfo_pool >::Iterate(), MAX_CLIENTS, and NETWORK_CLIENT_NAME_LENGTH.
Referenced by NetworkUpdateClientName(), ServerNetworkGameSocketHandler::Receive_CLIENT_IDENTIFY(), and ServerNetworkGameSocketHandler::Receive_CLIENT_SET_NAME().
void NetworkQueryServer | ( | const std::string & | connection_string | ) |
Query a server to fetch the game-info.
connection_string | the address to query. |
Definition at line 670 of file network.cpp.
References _network_available, Debug, NetworkGameListAddItem(), and NetworkGameList::refreshing.
Referenced by NetworkAddServer(), and NetworkGameWindow::OnClick().
void NetworkRebuildHostList | ( | ) |
Definition at line 733 of file network.cpp.
void NetworkReplaceCommandClientId | ( | CommandPacket & | cp, |
ClientID | client_id | ||
) |
Insert a client ID into the command data in a command packet.
cp | Command packet to modify. |
client_id | Client id to insert. |
Definition at line 433 of file network_command.cpp.
References _cmd_dispatch, and CommandPacket::cmd.
Referenced by ServerNetworkGameSocketHandler::Receive_CLIENT_COMMAND().
void NetworkSyncCommandQueue | ( | NetworkClientSocket * | cs | ) |
Sync our local command queue to the command queue of the given socket.
This is needed for the case where we receive a command before saving the game for a joining client, but without the execution of those commands. Not syncing those commands means that the client will never get them and as such will be in a desynced state from the time it started with joining.
cs | The client to sync the queue to. |
Definition at line 234 of file network_command.cpp.
References _local_execution_queue, and CommandPacket::callback.
Referenced by ServerNetworkGameSocketHandler::SendMap().
void NetworkTextMessage | ( | NetworkAction | action, |
TextColour | colour, | ||
bool | self_send, | ||
const std::string & | name, | ||
const std::string & | str = "" , |
||
int64_t | data = 0 , |
||
const std::string & | data_str = "" |
||
) |
Definition at line 232 of file network.cpp.
std::string NormalizeConnectionString | ( | const std::string & | connection_string, |
uint16_t | default_port | ||
) |
Normalize a connection string.
That is, ensure there is a port in the string.
connection_string | The connection string to normalize. |
default_port | The port to use if none is given. |
Definition at line 541 of file network.cpp.
References ParseFullConnectionString().
Referenced by TCPConnecter::TCPConnecter().
std::string_view ParseCompanyFromConnectionString | ( | const std::string & | connection_string, |
CompanyID * | company_id | ||
) |
Parse the company part ("#company" postfix) of a connecting string.
connection_string | The string with the connection data. |
company_id | The company ID to set, if available. |
Definition at line 477 of file network.cpp.
References COMPANY_NEW_COMPANY, COMPANY_SPECTATOR, and MAX_COMPANIES.
Referenced by ServerAddress::Parse(), and ParseFullConnectionString().
NetworkAddress ParseConnectionString | ( | const std::string & | connection_string, |
uint16_t | default_port | ||
) |
Convert a string containing either "hostname" or "hostname:ip" to a NetworkAddress.
connection_string | The string to parse. |
default_port | The default port to set port to if not in connection_string. |
Definition at line 556 of file network.cpp.
References ParseFullConnectionString().
Referenced by TCPConnecter::Resolve().
void ShowNetworkError | ( | StringID | error_string | ) |
Definition at line 302 of file network.cpp.
void UpdateNetworkGameWindow | ( | ) |
Update the network new window because a new server is found on the network.
Definition at line 66 of file network_gui.cpp.
References InvalidateWindowData(), WC_NETWORK_WINDOW, and WN_NETWORK_WINDOW_GAME.
Referenced by QueryNetworkGameSocketHandler::CloseConnection(), NetworkAddServer(), NetworkGameListAddItem(), NetworkGameListRemoveExpired(), NetworkGameListRemoveItem(), TCPQueryConnecter::OnFailure(), ClientNetworkCoordinatorSocketHandler::Receive_GC_ERROR(), ClientNetworkCoordinatorSocketHandler::Receive_GC_LISTING(), QueryNetworkGameSocketHandler::Receive_SERVER_BANNED(), QueryNetworkGameSocketHandler::Receive_SERVER_ERROR(), QueryNetworkGameSocketHandler::Receive_SERVER_FULL(), and QueryNetworkGameSocketHandler::Receive_SERVER_GAME_INFO().
|
extern |
List of broadcast addresses.
Definition at line 80 of file network.cpp.
Referenced by NetworkStartUp(), and NetworkUDPBroadCast().
|
extern |
The current frame.
Definition at line 78 of file network.cpp.
Referenced by TCPListenHandler< Tsocket, Tfull_packet, Tban_packet >::AcceptClient(), ClientNetworkCoordinatorSocketHandler::ConnectSuccess(), ClientNetworkGameSocketHandler::GameLoop(), NetworkClient_Connected(), NetworkServer_Tick(), ServerNetworkGameSocketHandler::Receive_CLIENT_ACK(), ServerNetworkGameSocketHandler::Receive_CLIENT_AUTH_RESPONSE(), ServerNetworkGameSocketHandler::Receive_CLIENT_MAP_OK(), ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(), ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN(), ClientNetworkGameSocketHandler::SendAck(), ServerNetworkGameSocketHandler::SendAuthRequest(), ServerNetworkGameSocketHandler::SendFrame(), ServerNetworkGameSocketHandler::SendMap(), ServerNetworkGameSocketHandler::SendSync(), and ServerNetworkGameSocketHandler::SendWelcome().
|
extern |
To where we may go with our clients.
Definition at line 77 of file network.cpp.
Referenced by DistributeCommandPacket(), NetworkSendCommand(), ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(), ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN(), and ServerNetworkGameSocketHandler::SendFrame().
|
extern |
The frame_counter of the server, if in network-mode.
Definition at line 76 of file network.cpp.
Referenced by NetworkClient_Connected(), ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(), and ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN().
|
extern |
Used in the server to store the last time a sync packet was sent to clients.
Definition at line 79 of file network.cpp.
Referenced by NetworkServer_Tick().
|
extern |
Whether we have finished joining or not.
Definition at line 86 of file network.cpp.
Referenced by ClientNetworkGameSocketHandler::GameLoop(), and ClientNetworkGameSocketHandler::Receive_SERVER_FRAME().
|
extern |
The number of bytes we already downloaded.
Definition at line 2081 of file network_gui.cpp.
Referenced by NetworkJoinStatusWindow::DrawWidget(), ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN(), and ClientNetworkGameSocketHandler::Receive_SERVER_MAP_DATA().
|
extern |
The total number of bytes to download.
Definition at line 2082 of file network_gui.cpp.
Referenced by NetworkJoinStatusWindow::DrawWidget(), ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN(), and ClientNetworkGameSocketHandler::Receive_SERVER_MAP_SIZE().
|
extern |
The status of joining.
Definition at line 2079 of file network_gui.cpp.
Referenced by NetworkJoinStatusWindow::DrawWidget(), NetworkClientJoinGame(), ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN(), ClientNetworkGameSocketHandler::Receive_SERVER_MAP_DONE(), ClientNetworkGameSocketHandler::Receive_SERVER_WAIT(), and ClientNetworkGameSocketHandler::SendJoin().
|
extern |
The number of clients waiting in front of us.
Definition at line 2080 of file network_gui.cpp.
Referenced by NetworkJoinStatusWindow::DrawWidget(), and ClientNetworkGameSocketHandler::Receive_SERVER_WAIT().
|
extern |
Reconnect timeout.
Definition at line 72 of file network.cpp.
Referenced by ClientNetworkGameSocketHandler::Receive_SERVER_NEWGAME().
|
extern |
What type of connection the Game Coordinator detected we are on.
Definition at line 31 of file network_coordinator.cpp.
Referenced by ClientNetworkCoordinatorSocketHandler::CloseConnection(), ClientNetworkCoordinatorSocketHandler::Receive_GC_REGISTER_ACK(), ClientNetworkCoordinatorSocketHandler::Register(), ClientNetworkCoordinatorSocketHandler::SendReceive(), and NetworkClientListWindow::SetStringParameters().
|
extern |
Our invite code as indicated by the Game Coordinator.
Definition at line 32 of file network_coordinator.cpp.
Referenced by ClientNetworkCoordinatorSocketHandler::Receive_GC_REGISTER_ACK(), and NetworkClientListWindow::SetStringParameters().
|
extern |
The current name of the server you are on.
Definition at line 319 of file network_client.cpp.
Referenced by ClientNetworkGameSocketHandler::Receive_SERVER_CONFIG_UPDATE(), NetworkClientListWindow::SetStringParameters(), and NetworkClientListWindow::UpdateWidgetSize().
|
extern |
The frame to perform the sync check.
Definition at line 85 of file network.cpp.
Referenced by ClientNetworkGameSocketHandler::GameLoop(), ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(), and ClientNetworkGameSocketHandler::Receive_SERVER_SYNC().
|
extern |
Seed to compare during sync checks.
Definition at line 81 of file network.cpp.
Referenced by ClientNetworkGameSocketHandler::GameLoop(), ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(), ClientNetworkGameSocketHandler::Receive_SERVER_SYNC(), ServerNetworkGameSocketHandler::SendFrame(), and ServerNetworkGameSocketHandler::SendSync().