Data Structures | Functions | Variables

network_server.cpp File Reference

Server part of the network protocol. More...

#include "../stdafx.h"
#include "../strings_func.h"
#include "../date_func.h"
#include "network_admin.h"
#include "network_server.h"
#include "network_udp.h"
#include "network_base.h"
#include "../console_func.h"
#include "../company_base.h"
#include "../command_func.h"
#include "../saveload/saveload.h"
#include "../saveload/saveload_filter.h"
#include "../station_base.h"
#include "../genworld.h"
#include "../company_func.h"
#include "../company_gui.h"
#include "../window_func.h"
#include "../roadveh.h"
#include "../order_backup.h"
#include "../core/pool_func.hpp"
#include "../core/random_func.hpp"
#include "../rev.h"

Go to the source code of this file.

Data Structures

struct  PacketWriter
 Writing a savegame directly to a number of packets. More...

Functions

 assert_compile (MAX_CLIENT_SLOTS > MAX_CLIENTS)
 Make very sure the preconditions given in network_type.h are actually followed.
 assert_compile (NetworkClientSocketPool::MAX_SIZE==MAX_CLIENT_SLOTS)
 Yes...
static void NetworkHandleCommandQueue (NetworkClientSocket *cs)
 Handle the command-queue of a socket.
void NetworkServerSendChat (NetworkAction action, DestType desttype, int dest, const char *msg, ClientID from_id, int64 data, bool from_admin)
 Send an actual chat message.
void NetworkPopulateCompanyStats (NetworkCompanyStats *stats)
 Populate the company stats.
void NetworkUpdateClientInfo (ClientID client_id)
 Send updated client info of a particular client.
static void NetworkCheckRestartMap ()
 Check if we want to restart the map.
static void NetworkAutoCleanCompanies ()
 Check if the server has autoclean_companies activated Two things happen: 1) If a company is not protected, it is closed after 1 year (for example) 2) If a company is protected, protection is disabled after 3 years (for example) (and item 1.
bool NetworkFindName (char new_name[NETWORK_CLIENT_NAME_LENGTH])
 Check whether a name is unique, and otherwise try to make it unique.
bool NetworkServerChangeClientName (ClientID client_id, const char *new_name)
 Change the client name of the given client.
void NetworkServerSetCompanyPassword (CompanyID company_id, const char *password, bool already_hashed)
 Set/Reset a company password on the server end.
void NetworkServer_Tick (bool send_frame)
 This is called every tick if this is a _network_server.
void NetworkServerYearlyLoop ()
 Yearly "callback".
void NetworkServerMonthlyLoop ()
 Monthly "callback".
void NetworkServerDailyLoop ()
 Daily "callback".
void NetworkServerShowStatusToConsole ()
 Show the status message of all clients on the console.
void NetworkServerSendConfigUpdate ()
 Send Config Update.
void NetworkServerUpdateCompanyPassworded (CompanyID company_id, bool passworded)
 Tell that a particular company is (not) 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, TextColour colour_code, const char *string)
 Send an rcon reply to the client.
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.
bool NetworkCompanyHasClients (CompanyID company)
 Check whether a particular company has clients.
void NetworkPrintClients ()
 Print all the clients to the console.

Variables

static ClientID _network_client_id = CLIENT_ID_FIRST
 The identifier counter for new clients (is never decreased).
NetworkClientSocketPool _networkclientsocket_pool ("NetworkClientSocket")
 The pool with clients.

Detailed Description

Server part of the network protocol.

Definition in file network_server.cpp.


Function Documentation

Yes...

static void NetworkAutoCleanCompanies (  )  [static]
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 2057 of file network_server.cpp.

References NetworkClientInfo::client_playas, and FOR_ALL_CLIENT_INFOS.

bool NetworkFindName ( char  new_name[NETWORK_CLIENT_NAME_LENGTH]  ) 

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 1677 of file network_server.cpp.

References CLIENT_ID_SERVER, NetworkClientInfo::client_name, FOR_ALL_CLIENT_INFOS, NetworkClientInfo::GetByClientID(), MAX_CLIENTS, and ttd_strlcpy().

Referenced by NetworkUpdateClientName().

static void NetworkHandleCommandQueue ( NetworkClientSocket cs  )  [static]

Handle the command-queue of a socket.

Parameters:
cs The socket to handle the queue for.

Definition at line 1762 of file network_server.cpp.

References free().

Referenced by NetworkServer_Tick().

void NetworkPopulateCompanyStats ( NetworkCompanyStats stats  ) 
void NetworkServer_Tick ( bool  send_frame  ) 
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 1721 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 1883 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 1968 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 2011 of file network_server.cpp.

References CLIENT_ID_SERVER.

Referenced by NetworkServerKickOrBanIP().

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 2022 of file network_server.cpp.

References NetworkServerKickOrBanIP().

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 2032 of file network_server.cpp.

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

void NetworkServerMonthlyLoop (  ) 

Monthly "callback".

Called whenever the month changes.

Definition at line 1875 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 
)
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 2002 of file network_server.cpp.

Referenced by IConsolePrint().

void NetworkServerSetCompanyPassword ( CompanyID  company_id,
const char *  password,
bool  already_hashed 
)

Set/Reset a company password on the server end.

Parameters:
company_id ID of the company the password should be changed for.
password The new password.
already_hashed Is the given password already hashed?

Definition at line 1746 of file network_server.cpp.

References _network_company_states, _settings_client, _settings_game, GameSettings::game_creation, GenerateCompanyPasswordHash(), GameCreationSettings::generation_seed, Company::IsValidHumanID(), lastof, ClientSettings::network, NetworkSettings::network_id, NetworkServerUpdateCompanyPassworded(), strecpy(), and StrEmpty().

Referenced by NetworkChangeCompanyPassword().

void NetworkServerShowStatusToConsole (  ) 
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 1947 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(), and SetWindowClassesDirty().

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

void NetworkServerYearlyLoop (  ) 

Yearly "callback".

Called whenever the year changes.

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


Variable Documentation

The pool with clients.