|
OpenTTD Source
13.2.1
|
#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... | |
Macros | |
| #define | _ddc_fastforward (false) |
| Helper variable to make the dedicated server go fast until the (first) join. 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. | |
Functions | |
| void | NetworkQueryServer (const std::string &connection_string) |
| Query a server to fetch the game-info. More... | |
| void | GetBindAddresses (NetworkAddressList *addresses, uint16 port) |
| Get the addresses to bind to. More... | |
| 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. More... | |
| 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. More... | |
| void | NetworkReplaceCommandClientId (CommandPacket &cp, ClientID client_id) |
| void | ShowNetworkError (StringID error_string) |
| void | NetworkTextMessage (NetworkAction action, TextColour colour, bool self_send, const std::string &name, const std::string &str="", int64 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. More... | |
| bool | NetworkMakeClientNameUnique (std::string &new_name) |
| Check whether a name is unique, and otherwise try to make it unique. More... | |
| std::string | GenerateCompanyPasswordHash (const std::string &password, const std::string &password_server_id, uint32 password_game_seed) |
| Hash the given password using server ID and game seed. More... | |
| std::string_view | ParseCompanyFromConnectionString (const std::string &connection_string, CompanyID *company_id) |
| Parse the company part ("#company" postfix) of a connecting string. More... | |
| NetworkAddress | ParseConnectionString (const std::string &connection_string, uint16 default_port) |
| Convert a string containing either "hostname" or "hostname:ip" to a NetworkAddress. More... | |
| std::string | NormalizeConnectionString (const std::string &connection_string, uint16 default_port) |
| Normalize a connection string. More... | |
Variables | |
| uint32 | _frame_counter_server |
| The frame_counter of the server, if in network-mode. | |
| uint32 | _frame_counter_max |
| To where we may go with our clients. | |
| uint32 | _frame_counter |
| The current frame. | |
| uint32 | _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 | _sync_seed_1 |
| Seed to compare during sync checks. | |
| uint32 | _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 | _network_join_waiting |
| The number of clients waiting in front of us. | |
| uint32 | _network_join_bytes |
| The number of bytes we already downloaded. | |
| uint32 | _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 | _network_reconnect |
| Reconnect timeout. | |
| CompanyMask | _network_company_passworded |
| Bitmask of the password status of all companies. | |
Variables and function used internally.
Definition in file network_internal.h.
| #define _ddc_fastforward (false) |
Helper variable to make the dedicated server go fast until the (first) join.
Used to load the desync debug logs, i.e. for reproducing a desync. There's basically no need to ever enable this, unless you really know what you are doing, i.e. debugging a desync. See docs/desync.txt for details.
Definition at line 50 of file network_internal.h.
| std::string GenerateCompanyPasswordHash | ( | const std::string & | password, |
| const std::string & | password_server_id, | ||
| uint32 | password_game_seed | ||
| ) |
Hash the given password using server ID and game seed.
| password | Password to hash. |
| password_server_id | Server ID. |
| password_game_seed | Game seed. |
Definition at line 177 of file network.cpp.
References NETWORK_SERVER_ID_LENGTH.
Referenced by NetworkServerSetCompanyPassword(), ClientNetworkGameSocketHandler::SendCompanyPassword(), ClientNetworkGameSocketHandler::SendMove(), and ClientNetworkGameSocketHandler::SendSetPassword().
| void GetBindAddresses | ( | NetworkAddressList * | addresses, |
| uint16 | port | ||
| ) |
Get the addresses to bind to.
| addresses | the list to write to. |
| port | the port to bind to. |
Definition at line 701 of file network.cpp.
References _network_bind_list.
Referenced by TCPListenHandler< ServerNetworkGameSocketHandler, PACKET_SERVER_FULL, PACKET_SERVER_BANNED >::Listen(), and NetworkUDPInitialize().
| StringID GetNetworkErrorMsg | ( | NetworkErrorCode | err | ) |
Retrieve the string id of an internal error number.
| err | NetworkErrorCode |
Definition at line 301 of file network.cpp.
References lengthof.
Referenced by ServerNetworkGameSocketHandler::Receive_CLIENT_ERROR(), 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 675 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().
| 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 1588 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().
| void NetworkQueryServer | ( | const std::string & | connection_string | ) |
Query a server to fetch the game-info.
| connection_string | the address to query. |
Definition at line 655 of file network.cpp.
References _network_available, NetworkGameListAddItem(), and NetworkGameList::refreshing.
Referenced by NetworkAddServer().
| 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 304 of file network_command.cpp.
References _local_execution_queue, CommandPacket::callback, CommandPacket::next, and CommandQueue::Peek().
| std::string NormalizeConnectionString | ( | const std::string & | connection_string, |
| uint16 | 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 527 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 463 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 | 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 542 of file network.cpp.
References ParseFullConnectionString().
Referenced by TCPConnecter::Resolve().