Functions | Variables

# network_func.h File Reference

Network functions used by other parts of OpenTTD. More...

`#include "core/address.h"`
`#include "network_type.h"`
`#include "../console_type.h"`
`#include "../gfx_type.h"`
`#include "../openttd.h"`
`#include "../company_type.h"`
`#include "../console_type.h"`

Go to the source code of this file.

## Functions
byte | NetworkSpectatorCount ()
void | NetworkUpdateClientName ()
| Send the server our name.
bool | NetworkCompanyHasClients (CompanyID company)
| Check whether a particular company has clients.
const char * | NetworkChangeCompanyPassword (CompanyID company_id, const char *password)
| Change the company password of a given company.
void | NetworkReboot ()
void | NetworkDisconnect (bool blocking=false, bool close_admins=true)
| We want to disconnect from the host/clients.
void | NetworkGameLoop ()
void | NetworkBackgroundLoop ()
| We have to do some (simple) background stuff that runs normally, even when we are not in multiplayer.
void | ParseConnectionString (const char **company, const char **port, char *connection_string)
| Converts a string to ip/port/company Format: IP:port::company.
void | NetworkStartDebugLog (NetworkAddress address)
void | NetworkPopulateCompanyStats (NetworkCompanyStats *stats)
| Populate the company stats.
void | NetworkUpdateClientInfo (ClientID client_id)
| Send updated client info of a particular client.
void | NetworkClientsToSpectators (CompanyID cid)
| Move the clients of a company to the spectators.
void | NetworkClientConnectGame (NetworkAddress address, CompanyID join_as, const char *join_server_password=NULL, const char *join_company_password=NULL)
void | NetworkClientRequestMove (CompanyID company, const char *pass="")
| Notify the server of this client wanting to be moved to another company.
void | NetworkClientSendRcon (const char *password, const char *command)
| Send a remote console command.
void | NetworkClientSendChat (NetworkAction action, DestType type, int dest, const char *msg, int64 data=0)
| Send a chat message.
bool | NetworkClientPreferTeamChat (const NetworkClientInfo *cio)
| Tell whether the client has team members where he/she can chat to.
bool | NetworkCompanyIsPassworded (CompanyID company_id)
| Check if the company we want to join requires a password.
bool | NetworkMaxCompaniesReached ()
| Check if max_companies has been reached on the server (local check only).
bool | NetworkMaxSpectatorsReached ()
| Check if max_spectatos has been reached on the server (local check only).
void | NetworkPrintClients ()
| Print all the clients to the console.
void | NetworkHandlePauseChange (PauseMode prev_mode, PauseMode changed_mode)
| Handle the pause mode change so we send the right messages to the chat.
void | NetworkServerDailyLoop ()
| Daily "callback".
void | NetworkServerMonthlyLoop ()
| Monthly "callback".
void | NetworkServerYearlyLoop ()
| Yearly "callback".
void | NetworkServerSendConfigUpdate ()
| Send Config Update.
void | NetworkServerShowStatusToConsole ()
| Show the status message of all clients on the console.
bool | NetworkServerStart ()
void | NetworkServerUpdateCompanyPassworded (CompanyID company_id, bool passworded)
| Tell that a particular company is (not) passworded.
bool | NetworkServerChangeClientName (ClientID client_id, const char *new_name)
| Change the client name of the given client.
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, TextColour colour_code, const char *string)
| Send an rcon reply to the client.
void | NetworkServerSendChat (NetworkAction action, DestType type, int dest, const char *msg, ClientID from_id, int64 data=0, bool from_admin=false)
| Send an actual chat message.
void | NetworkServerKickClient (ClientID client_id)
| Kick a single client.
uint | NetworkServerKickOrBanIP (ClientID client_id, bool ban)
| Ban, or kick, everyone joined from the given client's IP.
uint | NetworkServerKickOrBanIP (const char *ip, bool ban)
| Kick or ban someone based on an IP address.
void | NetworkInitChatMessage ()
| Initialize all buffers of the chat visualisation.
void CDECL | NetworkAddChatMessage (TextColour colour, uint duration, const char *message,...) WARN_FORMAT(3
void CDECL void | NetworkUndrawChatMessage ()
| Hide the chatbox.
void | NetworkChatMessageLoop ()
| Check if a message is expired.
void | NetworkAfterNewGRFScan ()
| Rebuild the GRFConfig's of the servers in the game list as we did a rescan and might have found new NewGRFs.
## Variables
NetworkServerGameInfo | _network_game_info
| Information about our game.
NetworkCompanyState * | _network_company_states
| Statistics about some companies.
ClientID | _network_own_client_id
| Our client identifier.
ClientID | _redirect_console_to_client
| If not invalid, redirect the console output to a client.
bool | _network_need_advertise
| Whether we need to advertise.
uint32 | _network_last_advertise_frame
| Last time we did advertise.
uint8 | _network_reconnect
| Reconnect timeout.
StringList | _network_bind_list
| The addresses to bind on.
StringList | _network_host_list
| The servers we know.
StringList | _network_ban_list
| The banned clients.

## Detailed Description

Network functions used by other parts of OpenTTD.

Definition in file network_func.h.

## Function Documentation

void NetworkBackgroundLoop | ( |  | ) |

We have to do some (simple) background stuff that runs normally, even when we are not in multiplayer.

For example stuff needed for finding servers or downloading content.

Definition at line 840 of file network.cpp.

References _network_content_client, TCPConnecter::CheckCallbacks(), NetworkHTTPSocketHandler::HTTPReceive(), NetworkBackgroundUDPLoop(), and ClientNetworkContentSocketHandler::SendReceive().

const char* NetworkChangeCompanyPassword | ( | CompanyID | company_id,
|  | const char * | password |
| ) |  |  |

Change the company password of a given company.

Parameters:

  | company_id | ID of the company the password should be changed for.
  | password | The unhashed password we like to set ('*' or '' resets the password)

Returns:
  The password.

Definition at line 161 of file network.cpp.

References NetworkClientSetCompanyPassword(), and NetworkServerSetCompanyPassword().

Referenced by CmdCompanyCtrl().

void NetworkChatMessageLoop | ( |  | ) |

Check if a message is expired.

Definition at line 193 of file network_chat_gui.cpp.

References _realtime_tick, ChatMessage::message, and ChatMessage::remove_time.

bool NetworkClientPreferTeamChat | ( | const NetworkClientInfo * | cio | ) |

Tell whether the client has team members where he/she can chat to.

Parameters:

  | cio | client to check members of.

Returns:
  true if there is at least one team member.

Definition at line 1268 of file network_client.cpp.

References _settings_client, NetworkClientInfo::client_playas, FOR_ALL_CLIENT_INFOS, ClientSettings::gui, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), and GUISettings::prefer_teamchat.

Referenced by MainWindow::OnKeyPress().

void NetworkClientRequestMove | ( | CompanyID | company_id,
|  | const char * | pass |
| ) |  |  |

Notify the server of this client wanting to be moved to another company.

Parameters:

  | company_id | id of the company the client wishes to be moved to.
  | pass | the password, is only checked on the server end if a password is needed.

Returns:
  void

Definition at line 1193 of file network_client.cpp.

References ClientNetworkGameSocketHandler::SendMove().

Referenced by MenuClickCompany(), CompanyWindow::OnClick(), and CompanyWindow::OnQueryTextFinished().

void NetworkClientSendChat | ( | NetworkAction | action,
|  | DestType | type,
|  | int | dest,
|  | const char * | msg,
|  | int64 | data |
| ) |  |  |

Send a chat message.

Parameters:

  | action | The action associated with the message.
  | type | The destination type.
  | dest | The destination index, be it a company index or client id.
  | msg | The actual message.
  | data | Arbitrary extra data.

Definition at line 1249 of file network_client.cpp.

References ClientNetworkGameSocketHandler::SendChat().

void NetworkClientSendRcon | ( | const char * | password,
|  | const char * | command |
| ) |  |  |

Send a remote console command.

Parameters:

  | password | The password.
  | command | The command to execute.

Definition at line 1182 of file network_client.cpp.

References ClientNetworkGameSocketHandler::SendRCon().

void NetworkClientsToSpectators | ( | CompanyID | cid | ) |

Move the clients of a company to the spectators.

Parameters:

  | cid | The company to move the clients of.

Definition at line 1202 of file network_client.cpp.

References _current_company, _local_company, CC_DEFAULT, NetworkClientInfo::client_name, NetworkClientInfo::client_playas, COMPANY_SPECTATOR, FOR_ALL_CLIENT_INFOS, Backup< T >::Restore(), and SetLocalCompany().

Referenced by ChangeOwnershipOfCompanyItems().

bool NetworkCompanyHasClients | ( | CompanyID | company | ) |

Check whether a particular company has clients.

Parameters:

  | company | The company to check.

Returns:
  True if at least one client is joined to the company.

Definition at line 2086 of file network_server.cpp.

References NetworkClientInfo::client_playas, and FOR_ALL_CLIENT_INFOS.

bool NetworkCompanyIsPassworded | ( | CompanyID | company_id | ) |

Check if the company we want to join requires a password.

Parameters:

  | company_id | id of the company we want to check the 'passworded' flag for.

Returns:
  true if the company requires a password.

Definition at line 213 of file network.cpp.

References HasBit().

Referenced by CompanyWindow::DrawWidget(), NetworkServerUpdateCompanyPassworded(), CompanyWindow::OnClick(), ServerNetworkAdminSocketHandler::SendCompanyInfo(), and ServerNetworkAdminSocketHandler::SendCompanyUpdate().

void NetworkDisconnect | ( | bool | blocking,
|  | bool | close_admins |
| ) |  |  |

We want to disconnect from the host/clients.

Parameters:

  | blocking | whether to wait till everything has been closed.
  | close_admins | Whether the admin sockets need to be closed as well.

Definition at line 782 of file network.cpp.

References _settings_client, DeleteWindowById(), FOR_ALL_ACTIVE_ADMIN_SOCKETS, FOR_ALL_CLIENT_SOCKETS, ClientSettings::network, NetworkClose(), NetworkUDPInitialize(), NetworkUDPRemoveAdvertise(), NetworkTCPSocketHandler::SendPackets(), ServerNetworkAdminSocketHandler::SendShutdown(), NetworkSettings::server_advertise, WC_NETWORK_STATUS_WINDOW, and WN_NETWORK_STATUS_WINDOW_JOIN.

Referenced by NetworkShutDown(), NetworkJoinStatusWindow::OnClick(), TCPQueryConnecter::OnFailure(), NetworkJoinStatusWindow::OnQueryTextFinished(), and SafeLoad().

void NetworkHandlePauseChange | ( | PauseMode | prev_mode,
|  | PauseMode | changed_mode |
| ) |  |  |

Handle the pause mode change so we send the right messages to the chat.

Parameters:

  | prev_mode | The previous pause mode.
  | changed_mode | The pause mode that got changed.

Definition at line 336 of file network.cpp.

References _pause_mode, CC_DEFAULT, DRAW_STRING_BUFFER, lastof, PM_PAUSED_ACTIVE_CLIENTS, PM_PAUSED_GAME_SCRIPT, PM_PAUSED_JOIN, PM_PAUSED_NORMAL, PM_UNPAUSED, and SetDParam().

Referenced by CmdPause().

void NetworkInitChatMessage | ( |  | ) |

Initialize all buffers of the chat visualisation.

Definition at line 131 of file network_chat_gui.cpp.

References _settings_client, ClientSettings::gui, ChatMessage::message, GUISettings::network_chat_box_height, GUISettings::network_chat_box_width, NetworkReInitChatBoxSize(), and ReallocT().

Referenced by OnNewYear().

bool NetworkMaxCompaniesReached | ( |  | ) |

Check if max_companies has been reached on the server (local check only).

Returns:
  true if the max value has been reached or exceeded, false otherwise.

Definition at line 1285 of file network_client.cpp.

References _network_server, _settings_client, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetNumItems(), NetworkSettings::max_companies, and ClientSettings::network.

Referenced by PopupMainCompanyToolbMenu().

bool NetworkMaxSpectatorsReached | ( |  | ) |

Check if max_spectatos has been reached on the server (local check only).

Returns:
  true if the max value has been reached or exceeded, false otherwise.

Definition at line 1294 of file network_client.cpp.

References _network_server, _settings_client, NetworkSettings::max_spectators, and ClientSettings::network.

Referenced by PopupMainCompanyToolbMenu().

void NetworkPopulateCompanyStats | ( | NetworkCompanyStats * | stats | ) |

Populate the company stats.

Parameters:

  | stats | the stats to update

Definition at line 1521 of file network_server.cpp.

References FACIL_AIRPORT, FACIL_BUS_STOP, FACIL_DOCK, FACIL_TRAIN, FACIL_TRUCK_STOP, BaseStation::facilities, FOR_ALL_VEHICLES, SpecializedVehicle< RoadVehicle, Type >::From(), RoadVehicle::IsBus(), Vehicle::IsPrimaryVehicle(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), MAX_COMPANIES, NetworkCompanyStats::num_station, NetworkCompanyStats::num_vehicle, BaseStation::owner, Vehicle::owner, BaseVehicle::type, VEH_AIRCRAFT, VEH_ROAD, VEH_SHIP, and VEH_TRAIN.

Referenced by ServerNetworkUDPSocketHandler::Receive_CLIENT_DETAIL_INFO(), ServerNetworkGameSocketHandler::SendCompanyInfo(), and ServerNetworkAdminSocketHandler::SendCompanyStats().

bool NetworkServerChangeClientName | ( | ClientID | client_id,
|  | const char * | new_name |
| ) |  |  |

Change the client name of the given client.

Parameters:

  | client_id | the client to change the name of
  | new_name | the new name for the client

Returns:
  true iff the name was changed

Definition at line 1708 of file network_server.cpp.

References CC_DEFAULT, NetworkClientInfo::client_name, FOR_ALL_CLIENT_INFOS, NetworkClientInfo::GetByClientID(), lastof, NetworkUpdateClientInfo(), and strecpy().

void NetworkServerDailyLoop | ( |  | ) |

Daily "callback".

Called whenever the date changes.

Definition at line 1903 of file network_server.cpp.

References _date, ADMIN_FREQUENCY_DAILY, ADMIN_FREQUENCY_WEEKLY, and NetworkAdminUpdate().

Referenced by OnNewDay().

void NetworkServerDoMove | ( | ClientID | client_id,
|  | CompanyID | company_id |
| ) |  |  |

Handle the tid-bits of moving a client from one company to another.

Parameters:

  | client_id | id of the client we want to move.
  | company_id | id of the company we want to move the client to.

Returns:
  void

Definition at line 1988 of file network_server.cpp.

References _network_dedicated, CLIENT_ID_SERVER, NetworkClientInfo::client_playas, DESTTYPE_BROADCAST, NetworkClientInfo::GetByClientID(), NetworkServerSendChat(), NetworkUpdateClientInfo(), and SetLocalCompany().

Referenced by MenuClickCompany(), and CompanyWindow::OnClick().

void NetworkServerKickClient | ( | ClientID | client_id | ) |

Kick a single client.

Parameters:

  | client_id | The client to kick.

Definition at line 2031 of file network_server.cpp.

References CLIENT_ID_SERVER.

Referenced by NetworkServerKickOrBanIP().

uint NetworkServerKickOrBanIP | ( | const char * | ip,
|  | bool | ban |
| ) |  |  |

Kick or ban someone based on an IP address.

Parameters:

  | ip | The IP address/range to ban/kick.
  | ban | Whether to ban or just kick.

Definition at line 2052 of file network_server.cpp.

References _network_ban_list, SmallVector< T, S >::Append(), SmallVector< T, S >::Begin(), CLIENT_ID_SERVER, SmallVector< T, S >::End(), FOR_ALL_CLIENT_SOCKETS, and NetworkServerKickClient().

uint NetworkServerKickOrBanIP | ( | ClientID | client_id,
|  | bool | ban |
| ) |  |  |

Ban, or kick, everyone joined from the given client's IP.

Parameters:

  | client_id | The client to check for.
  | ban | Whether to ban or kick.

Definition at line 2042 of file network_server.cpp.

References NetworkServerKickOrBanIP().

Referenced by NetworkServerKickOrBanIP().

void NetworkServerMonthlyLoop | ( |  | ) |

Monthly "callback".

Called whenever the month changes.

Definition at line 1895 of file network_server.cpp.

References _cur_month, ADMIN_FREQUENCY_MONTHLY, ADMIN_FREQUENCY_QUARTERLY, NetworkAdminUpdate(), and NetworkAutoCleanCompanies().

Referenced by OnNewMonth().

void NetworkServerSendChat | ( | NetworkAction | action,
|  | DestType | desttype,
|  | int | dest,
|  | const char * | msg,
|  | ClientID | from_id,
|  | int64 | data,
|  | bool | from_admin |
| ) |  |  |

Send an actual chat message.

Parameters:

  | action | The action that's performed.
  | desttype | The type of destination.
  | dest | The actual destination index.
  | msg | The actual message.
  | from_id | The origin of the message.
  | data | Arbitrary data.
  | from_admin | Whether the origin is an admin or not.

Definition at line 1226 of file network_server.cpp.

References _local_company, _settings_client, NetworkClientInfo::client_id, CLIENT_ID_SERVER, NetworkClientInfo::client_name, NetworkClientInfo::client_playas, DEBUG, DESTTYPE_BROADCAST, DESTTYPE_CLIENT, DESTTYPE_TEAM, FOR_ALL_CLIENT_SOCKETS, NetworkClientInfo::GetByClientID(), GetDrawStringCompanyColour(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), lastof, ClientSettings::network, NETWORK_NAME_LENGTH, NetworkAdminChat(), NetworkSettings::server_admin_chat, and SetDParam().

Referenced by CmdCompanyCtrl(), NetworkServerDoMove(), ServerNetworkGameSocketHandler::Receive_CLIENT_COMMAND(), and SendChat().

void NetworkServerSendRcon | ( | ClientID | client_id,
|  | TextColour | colour_code,
|  | const char * | string |
| ) |  |  |

Send an rcon reply to the client.

Parameters:

  | client_id | The identifier of the client.
  | colour_code | The colour of the text.
  | string | The actual reply.

Definition at line 2022 of file network_server.cpp.

Referenced by IConsolePrint().

void NetworkServerShowStatusToConsole | ( |  | ) |

Show the status message of all clients on the console.

Definition at line 1919 of file network_server.cpp.

References CC_INFO, NetworkClientInfo::client_name, NetworkClientInfo::client_playas, FOR_ALL_CLIENT_SOCKETS, IConsolePrintF(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), and lengthof.

void NetworkServerUpdateCompanyPassworded | ( | CompanyID | company_id,
|  | bool | passworded |
| ) |  |  |

Tell that a particular company is (not) passworded.

Parameters:

  | company_id | The company that got/removed the password.
  | passworded | Whether the password was received or removed.

Definition at line 1967 of file network_server.cpp.

References _network_company_passworded, FOR_ALL_CLIENT_SOCKETS, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), NetworkAdminCompanyUpdate(), NetworkCompanyIsPassworded(), SB(), SetWindowClassesDirty(), and WC_COMPANY.

Referenced by CmdCompanyCtrl(), NetworkAutoCleanCompanies(), and NetworkServerSetCompanyPassword().

void NetworkServerYearlyLoop | ( |  | ) |

Yearly "callback".

Called whenever the year changes.

Definition at line 1888 of file network_server.cpp.

References ADMIN_FREQUENCY_ANUALLY, NetworkAdminUpdate(), and NetworkCheckRestartMap().

Referenced by OnNewYear().

void NetworkUpdateClientInfo | ( | ClientID | client_id | ) |

Send updated client info of a particular client.

Parameters:

  | client_id | The client to send it for.

Definition at line 1560 of file network_server.cpp.

References _date, _date_fract, NetworkClientInfo::client_playas, DEBUG, FOR_ALL_CLIENT_SOCKETS, NetworkClientInfo::GetByClientID(), and NetworkAdminClientUpdate().

Referenced by CmdCompanyCtrl(), NetworkServerChangeClientName(), NetworkServerDoMove(), and NetworkUpdateClientName().

void ParseConnectionString | ( | const char ** | company,
|  | const char ** | port,
|  | char * | connection_string |
| ) |  |  |

Converts a string to ip/port/company Format: IP:port::company.

connection_string will be re-terminated to separate out the hostname, and company and port will be set to the company and port strings given by the user, inside the memory area originally occupied by connection_string.

Definition at line 462 of file network.cpp.

Referenced by NetworkHTTPSocketHandler::Connect(), and AfterNewGRFScan::OnNewGRFsScanned().