OpenTTD Source: src/network/network_internal.h File Reference

OpenTTD Source 15.0-RC2

Data Structures | Typedefs | Enumerations | Functions | Variables
network_internal.h File Reference

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"`
`#include "../strings_type.h"`

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 : uint8_t { 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 (std::string_view connection_string)
| Query a server to fetch the game-info.
void | GetBindAddresses (NetworkAddressList *addresses, uint16_t port)
| Get the addresses to bind to.
struct NetworkGame * | NetworkAddServer (std::string_view 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, std::string_view name, std::string_view str={}, StringParameter &&data={})
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 (std::string_view connection_string, CompanyID *company_id)
| Parse the company part ("#company" postfix) of a connecting string.
NetworkAddress | ParseConnectionString (std::string_view connection_string, uint16_t default_port)
| Convert a string containing either "hostname" or "hostname:ip" to a NetworkAddress.
std::string | NormalizeConnectionString (std::string_view 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.

## Detailed Description

Variables and function used internally.

Definition in file network_internal.h.

## Typedef Documentation

## ◆ NetworkClientSocket

typedef class ServerNetworkGameSocketHandler NetworkClientSocket

Definition at line 41 of file network_internal.h.

## Enumeration Type Documentation

## ◆ NetworkJoinStatus

enum NetworkJoinStatus : uint8_t

Status of the clients during joining.

Definition at line 44 of file network_internal.h.

## Function Documentation

## ◆ ClientNetworkEmergencySave()

void ClientNetworkEmergencySave | ( |  | ) |

Create an emergency savegame when the network connection is lost.

Definition at line 91 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().

## ◆ GetBindAddresses()

void GetBindAddresses | ( | NetworkAddressList * | addresses,
|  | uint16_t | port
| ) |  |

Get the addresses to bind to.

Parameters

  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().

## ◆ GetNetworkErrorMsg()

StringID GetNetworkErrorMsg | ( | NetworkErrorCode | err | ) |

Retrieve the string id of an internal error number.

Parameters

  err | NetworkErrorCode

Returns
  the StringID

Definition at line 310 of file network.cpp.

References lengthof.

Referenced by ServerNetworkGameSocketHandler::Receive_CLIENT_ERROR(), ClientNetworkGameSocketHandler::Receive_SERVER_ERROR_QUIT(), ServerNetworkAdminSocketHandler::SendError(), and ServerNetworkGameSocketHandler::SendError().

## ◆ NetworkAddServer()

struct NetworkGame * NetworkAddServer | ( | std::string_view | 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.

Parameters

  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).

Returns
  The entry on the game list.

Definition at line 692 of file network.cpp.

References ClearGRFConfigList(), NetworkServerGameInfo::grfconfig, NetworkGame::info, NetworkGame::manually, NetworkGameListAddItem(), NetworkQueryServer(), NetworkServerGameInfo::server_name, UpdateNetworkGameWindow(), and NetworkGame::version.

Referenced by NetworkGameWindow::OnQueryTextFinished(), and ClientNetworkUDPSocketHandler::Receive_SERVER_RESPONSE().

## ◆ NetworkCalculateLag()

uint NetworkCalculateLag | ( | const NetworkClientSocket * | cs | ) |

Definition at line 284 of file network.cpp.

## ◆ NetworkDistributeCommands()

void NetworkDistributeCommands | ( |  | ) |

Distribute the commands of ourself and the clients.

Definition at line 345 of file network_command.cpp.

References _local_wait_queue, and DistributeQueue().

## ◆ NetworkExecuteLocalCommandQueue()

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.

## ◆ NetworkFreeLocalCommandQueue()

void NetworkFreeLocalCommandQueue | ( |  | ) |

Free the local command queues.

Definition at line 278 of file network_command.cpp.

References _local_execution_queue, and _local_wait_queue.

## ◆ NetworkMakeClientNameUnique()

bool NetworkMakeClientNameUnique | ( | std::string & | name | ) |

Check whether a name is unique, and otherwise try to make it unique.

Parameters

  new_name | The name to check/modify.

Returns
  True if an unique name was achieved.

Definition at line 1608 of file network_server.cpp.

References CLIENT_ID_SERVER, NetworkClientInfo::client_name, NetworkClientInfo::GetByClientID(), Pool< Titem, Tindex, Tgrowth_step, Tpool_type, Tcache >::PoolItem<&_networkclientinfo_pool >::Iterate(), MAX_CLIENTS, and NETWORK_CLIENT_NAME_LENGTH.

Referenced by NetworkUpdateClientName(), ServerNetworkGameSocketHandler::Receive_CLIENT_IDENTIFY(), and ServerNetworkGameSocketHandler::Receive_CLIENT_SET_NAME().

## ◆ NetworkQueryServer()

void NetworkQueryServer | ( | std::string_view | connection_string | ) |

Query a server to fetch the game-info.

Parameters

  connection_string | the address to query.

Definition at line 670 of file network.cpp.

References _network_available, Debug, NetworkGameListAddItem(), and NetworkGame::refreshing.

Referenced by NetworkAddServer(), and NetworkGameWindow::OnClick().

## ◆ NetworkRebuildHostList()

void NetworkRebuildHostList | ( |  | ) |

Definition at line 733 of file network.cpp.

## ◆ NetworkReplaceCommandClientId()

void NetworkReplaceCommandClientId | ( | CommandPacket & | cp,
|  | ClientID | client_id
| ) |  |

Insert a client ID into the command data in a command packet.

Parameters

  cp | Command packet to modify.
  client_id | Client id to insert.

Definition at line 432 of file network_command.cpp.

References _cmd_dispatch, and CommandPacket::cmd.

Referenced by ServerNetworkGameSocketHandler::Receive_CLIENT_COMMAND().

## ◆ NetworkSyncCommandQueue()

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.

Parameters

  cs | The client to sync the queue to.

Definition at line 233 of file network_command.cpp.

References _local_execution_queue, and CommandPacket::callback.

Referenced by ServerNetworkGameSocketHandler::SendMap().

## ◆ NetworkTextMessage()

void NetworkTextMessage | ( | NetworkAction | action,
|  | TextColour | colour,
|  | bool | self_send,
|  | std::string_view | name,
|  | std::string_view | str = `{}`,
|  | StringParameter && | data = `{}`
| ) |  |

Definition at line 233 of file network.cpp.

## ◆ NormalizeConnectionString()

std::string NormalizeConnectionString | ( | std::string_view | connection_string,
|  | uint16_t | default_port
| ) |  |

Normalize a connection string.

That is, ensure there is a port in the string.

Parameters

  connection_string | The connection string to normalize.
  default_port | The port to use if none is given.

Returns
  The normalized connection string.

Definition at line 539 of file network.cpp.

References ParseFullConnectionString().

Referenced by TCPConnecter::TCPConnecter().

## ◆ ParseCompanyFromConnectionString()

std::string_view ParseCompanyFromConnectionString | ( | std::string_view | connection_string,
|  | CompanyID * | company_id
| ) |  |

Parse the company part ("#company" postfix) of a connecting string.

Parameters

  connection_string | The string with the connection data.
  company_id | The company ID to set, if available.

Returns
  A std::string_view into the connection string without the company part.

Definition at line 475 of file network.cpp.

References COMPANY_NEW_COMPANY, and COMPANY_SPECTATOR.

Referenced by ServerAddress::Parse(), and ParseFullConnectionString().

## ◆ ParseConnectionString()

NetworkAddress ParseConnectionString | ( | std::string_view | connection_string,
|  | uint16_t | default_port
| ) |  |

Convert a string containing either "hostname" or "hostname:ip" to a NetworkAddress.

Parameters

  connection_string | The string to parse.
  default_port | The default port to set port to if not in connection_string.

Returns
  A valid NetworkAddress of the parsed information.

Definition at line 554 of file network.cpp.

References ParseFullConnectionString().

Referenced by TCPConnecter::Resolve().

## ◆ ShowNetworkError()

void ShowNetworkError | ( | StringID | error_string | ) |

Definition at line 299 of file network.cpp.

## ◆ UpdateNetworkGameWindow()

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().

## Variable Documentation

## ◆ _broadcast_list

NetworkAddressList _broadcast_list
| extern

List of broadcast addresses.

Definition at line 81 of file network.cpp.

Referenced by NetworkStartUp(), and NetworkUDPBroadCast().

## ◆ _frame_counter

uint32_t _frame_counter
| extern

The current frame.

Definition at line 79 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().

## ◆ _frame_counter_max

uint32_t _frame_counter_max
| extern

To where we may go with our clients.

Definition at line 78 of file network.cpp.

Referenced by DistributeCommandPacket(), NetworkSendCommand(), ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(), ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN(), and ServerNetworkGameSocketHandler::SendFrame().

## ◆ _frame_counter_server

uint32_t _frame_counter_server
| extern

The frame_counter of the server, if in network-mode.

Definition at line 77 of file network.cpp.

Referenced by NetworkClient_Connected(), ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(), and ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN().

## ◆ _last_sync_frame

uint32_t _last_sync_frame
| extern

Used in the server to store the last time a sync packet was sent to clients.

Definition at line 80 of file network.cpp.

Referenced by NetworkServer_Tick().

## ◆ _network_first_time

bool _network_first_time
| extern

Whether we have finished joining or not.

Definition at line 87 of file network.cpp.

Referenced by ClientNetworkGameSocketHandler::GameLoop(), and ClientNetworkGameSocketHandler::Receive_SERVER_FRAME().

## ◆ _network_join_bytes

uint32_t _network_join_bytes
| extern

The number of bytes we already downloaded.

Definition at line 1989 of file network_gui.cpp.

Referenced by NetworkJoinStatusWindow::DrawWidget(), ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN(), and ClientNetworkGameSocketHandler::Receive_SERVER_MAP_DATA().

## ◆ _network_join_bytes_total

uint32_t _network_join_bytes_total
| extern

The total number of bytes to download.

Definition at line 1990 of file network_gui.cpp.

Referenced by NetworkJoinStatusWindow::DrawWidget(), ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN(), and ClientNetworkGameSocketHandler::Receive_SERVER_MAP_SIZE().

## ◆ _network_join_status

NetworkJoinStatus _network_join_status
| extern

The status of joining.

Definition at line 1987 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().

## ◆ _network_join_waiting

uint8_t _network_join_waiting
| extern

The number of clients waiting in front of us.

Definition at line 1988 of file network_gui.cpp.

Referenced by NetworkJoinStatusWindow::DrawWidget(), and ClientNetworkGameSocketHandler::Receive_SERVER_WAIT().

## ◆ _network_reconnect

uint8_t _network_reconnect
| extern

Reconnect timeout.

Definition at line 73 of file network.cpp.

Referenced by ClientNetworkGameSocketHandler::Receive_SERVER_NEWGAME().

## ◆ _network_server_connection_type

ConnectionType _network_server_connection_type
| 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(), NetworkClientListWindow::GetWidgetString(), ClientNetworkCoordinatorSocketHandler::Receive_GC_REGISTER_ACK(), ClientNetworkCoordinatorSocketHandler::Register(), and ClientNetworkCoordinatorSocketHandler::SendReceive().

## ◆ _network_server_invite_code

std::string _network_server_invite_code
| extern

Our invite code as indicated by the Game Coordinator.

Definition at line 32 of file network_coordinator.cpp.

Referenced by NetworkClientListWindow::GetWidgetString(), and ClientNetworkCoordinatorSocketHandler::Receive_GC_REGISTER_ACK().

## ◆ _network_server_name

std::string _network_server_name
| extern

The current name of the server you are on.

Definition at line 275 of file network_client.cpp.

Referenced by NetworkClientListWindow::GetWidgetString(), ClientNetworkGameSocketHandler::Receive_SERVER_CONFIG_UPDATE(), and NetworkClientListWindow::UpdateWidgetSize().

## ◆ _sync_frame

uint32_t _sync_frame
| extern

The frame to perform the sync check.

Definition at line 86 of file network.cpp.

Referenced by ClientNetworkGameSocketHandler::GameLoop(), ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(), and ClientNetworkGameSocketHandler::Receive_SERVER_SYNC().

## ◆ _sync_seed_1

uint32_t _sync_seed_1
| extern

Seed to compare during sync checks.

Definition at line 82 of file network.cpp.

Referenced by ClientNetworkGameSocketHandler::GameLoop(), ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(), ClientNetworkGameSocketHandler::Receive_SERVER_SYNC(), ServerNetworkGameSocketHandler::SendFrame(), and ServerNetworkGameSocketHandler::SendSync().