OpenTTD Source: ServerNetworkGameSocketHandler Class Reference

OpenTTD Source 14.1

Public Types | Public Member Functions | Static Public Member Functions | Data Fields | Protected Member Functions
ServerNetworkGameSocketHandler Class Reference

Class for handling the server side of the game connection. More...

`#include <network_server.h>`

Inheritance diagram for ServerNetworkGameSocketHandler:

## Public Types
enum | ClientStatus { STATUS_INACTIVE, STATUS_NEWGRFS_CHECK, STATUS_AUTH_GAME, STATUS_AUTH_COMPANY, STATUS_AUTHORIZED, STATUS_MAP_WAIT, STATUS_MAP, STATUS_DONE_MAP, STATUS_PRE_ACTIVE, STATUS_ACTIVE, STATUS_END }
| Status of a client. More...
Public Types inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_networkclientsocket_pool >
typedef struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > | Pool
| Type of the pool this item is going to be part of.

## Public Member Functions
| ServerNetworkGameSocketHandler (SOCKET s)
| Create a new socket for the server side of the game connection. More...
| ~ServerNetworkGameSocketHandler ()
| Clear everything related to this client.
std::unique_ptr< Packet > | ReceivePacket () override
| Receives a packet for the given client. More...
NetworkRecvStatus | CloseConnection (NetworkRecvStatus status) override
| Close the network connection due to the given status. More...
std::string | GetClientName () const
| Get the name of the client, if the user did not send it yet, Client ID is used. More...
void | CheckNextClientToSendMap (NetworkClientSocket *ignore_cs=nullptr)
NetworkRecvStatus | SendWait ()
| Tell the client that its put in a waiting queue.
NetworkRecvStatus | SendMap ()
| This sends the map to the client.
NetworkRecvStatus | SendErrorQuit (ClientID client_id, NetworkErrorCode errorno)
| Tell the client another client quit with an error. More...
NetworkRecvStatus | SendQuit (ClientID client_id)
| Tell the client another client quit. More...
NetworkRecvStatus | SendShutdown ()
| Tell the client we're shutting down.
NetworkRecvStatus | SendNewGame ()
| Tell the client we're starting a new game.
NetworkRecvStatus | SendRConResult (uint16_t colour, const std::string &command)
| Send the result of a console action. More...
NetworkRecvStatus | SendMove (ClientID client_id, CompanyID company_id)
| Tell that a client moved to another company. More...
NetworkRecvStatus | SendClientInfo (NetworkClientInfo *ci)
| Send the client information about a client. More...
NetworkRecvStatus | SendError (NetworkErrorCode error, const std::string &reason={})
| Send an error to the client, and close its connection. More...
NetworkRecvStatus | SendChat (NetworkAction action, ClientID client_id, bool self_send, const std::string &msg, int64_t data)
| Send a chat message. More...
NetworkRecvStatus | SendExternalChat (const std::string &source, TextColour colour, const std::string &user, const std::string &msg)
| Send a chat message from external source. More...
NetworkRecvStatus | SendJoin (ClientID client_id)
| Tell that a client joined. More...
NetworkRecvStatus | SendFrame ()
| Tell the client that they may run to a particular frame.
NetworkRecvStatus | SendSync ()
| Request the client to sync.
NetworkRecvStatus | SendCommand (const CommandPacket &cp)
| Send a command to the client to execute. More...
NetworkRecvStatus | SendCompanyUpdate ()
| Send an update about the company password states.
NetworkRecvStatus | SendConfigUpdate ()
| Send an update about the max company/spectator counts.
const std::string & | GetClientIP ()
| Get the IP address/hostname of the connected client. More...
Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_networkclientsocket_pool >
void * | operator new (size_t size)
| Allocates space for new Titem. More...
void * | operator new (size_t size, size_t index)
| Allocates space for new Titem with given index. More...
void * | operator new (size_t, void *ptr)
| Allocates space for new Titem at given memory address. More...
void | operator delete (void *p)
| Marks Titem as free. More...
Public Member Functions inherited from NetworkGameSocketHandler
NetworkRecvStatus | CloseConnection (bool error=true) override
| Functions to help ReceivePacket/SendPacket a bit A socket can make errors. More...
void | SetInfo (NetworkClientInfo *info)
| Sets the client info for this socket handler. More...
NetworkClientInfo * | GetInfo () const
| Gets the client info of this socket handler. More...
NetworkRecvStatus | ReceivePackets ()
| Do the actual receiving of packets. More...
const char * | ReceiveCommand (Packet &p, CommandPacket &cp)
| Receives a command from the network. More...
void | SendCommand (Packet &p, const CommandPacket &cp)
| Sends a command over the network. More...
bool | IsPendingDeletion () const
void | DeferDeletion ()
Public Member Functions inherited from NetworkTCPSocketHandler
bool | IsConnected () const
| Whether this socket is currently bound to a socket. More...
void | CloseSocket ()
| Close the actual socket of the connection. More...
virtual void | SendPacket (std::unique_ptr< Packet > &&packet)
| This function puts the packet in the send-queue and it is send as soon as possible. More...
SendPacketsState | SendPackets (bool closing_down=false)
| Sends all the buffered packets out for this client. More...
bool | CanSendReceive ()
| Check whether this socket can send or receive something. More...
bool | HasSendQueue ()
| Whether there is something pending in the send queue. More...
| NetworkTCPSocketHandler (SOCKET s=INVALID_SOCKET)
| Construct a socket handler for a TCP connection. More...
Public Member Functions inherited from NetworkSocketHandler
| NetworkSocketHandler ()
| Create a new unbound socket.
virtual | ~NetworkSocketHandler ()=default
| Close the socket when destructing the socket handler.
void | MarkClosed ()
| Mark the connection as closed. More...
bool | HasClientQuit () const
| Whether the current client connected to the socket has quit. More...
void | Reopen ()
| Reopen the socket so we can send/receive stuff again.

## Static Public Member Functions
static void | Send ()
| Send the packets for the server sockets.
static void | AcceptConnection (SOCKET s, const NetworkAddress &address)
| Handle the accepting of a connection to the server. More...
static bool | AllowConnection ()
| Whether an connection is allowed or not at this moment. More...
static const char * | GetName ()
| Get the name used by the listener. More...
static ServerNetworkGameSocketHandler * | GetByClientID (ClientID client_id)
| Return the client state given it's client-identifier. More...
Static Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_networkclientsocket_pool >
static bool | CanAllocateItem (size_t n=1)
| Helper functions so we can use PoolItem::Function() instead of _poolitem_pool.Function() More...
static bool | CleaningPool ()
| Returns current state of pool cleaning - yes or no. More...
static bool | IsValidID (size_t index)
| Tests whether given index can be used to get valid (non-nullptr) Titem. More...
static Titem * | Get (size_t index)
| Returns Titem with given index. More...
static Titem * | GetIfValid (size_t index)
| Returns Titem with given index. More...
static size_t | GetPoolSize ()
| Returns first unused index. More...
static size_t | GetNumItems ()
| Returns number of valid items in the pool. More...
static void | PostDestructor ([[maybe_unused]] size_t index)
| Dummy function called after destructor of each member. More...
static Pool::IterateWrapper< Titem > | Iterate (size_t from=0)
| Returns an iterable ensemble of all valid Titem. More...
Static Public Member Functions inherited from NetworkGameSocketHandler
static void | ProcessDeferredDeletions ()
Static Public Member Functions inherited from TCPListenHandler< ServerNetworkGameSocketHandler, PACKET_SERVER_FULL, PACKET_SERVER_BANNED >
static bool | ValidateClient (SOCKET s, NetworkAddress &address)
static void | AcceptClient (SOCKET ls)
| Accepts clients from the sockets. More...
static bool | Receive ()
| Handle the receiving of packets. More...
static bool | Listen (uint16_t port)
| Listen on a particular port. More...
static void | CloseListeners ()
| Close the sockets we're listening on.

## Data Fields
byte | lag_test
| Byte used for lag-testing the client.
byte | last_token
| The last random token we did send to verify the client is listening.
uint32_t | last_token_frame
| The last frame we received the right token.
ClientStatus | status
| Status of this client.
CommandQueue | outgoing_queue
| The command-queue awaiting delivery; conceptually more a bucket to gather commands in, after which the whole bucket is sent to the client.
size_t | receive_limit
| Amount of bytes that we can receive at this moment.
std::shared_ptr< struct PacketWriter > | savegame
| Writer used to write the savegame.
NetworkAddress | client_address
| IP-address of the client (so they can be banned)
Data Fields inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_networkclientsocket_pool >
Tindex | index
| Index of this pool item.
Data Fields inherited from NetworkGameSocketHandler
ClientID | client_id
| Client identifier.
uint32_t | last_frame
| Last frame we have executed.
uint32_t | last_frame_server
| Last frame the server has executed.
CommandQueue | incoming_queue
| The command-queue awaiting handling.
std::chrono::steady_clock::time_point | last_packet
| Time we received the last frame.
Data Fields inherited from NetworkTCPSocketHandler
SOCKET | sock
| The socket currently connected to.
bool | writable
| Can we write to this socket?

## Protected Member Functions
NetworkRecvStatus | Receive_CLIENT_JOIN (Packet &p) override
| Try to join the server: string OpenTTD revision (norev000 if no revision). More...
NetworkRecvStatus | Receive_CLIENT_GAME_INFO (Packet &p) override
| Request game information. More...
NetworkRecvStatus | Receive_CLIENT_GAME_PASSWORD (Packet &p) override
| Send a password to the server to authorize: uint8_t Password type (see NetworkPasswordType). More...
NetworkRecvStatus | Receive_CLIENT_COMPANY_PASSWORD (Packet &p) override
| Send a password to the server to authorize uint8_t Password type (see NetworkPasswordType). More...
NetworkRecvStatus | Receive_CLIENT_GETMAP (Packet &p) override
| Request the map from the server. More...
NetworkRecvStatus | Receive_CLIENT_MAP_OK (Packet &p) override
| Tell the server that we are done receiving/loading the map. More...
NetworkRecvStatus | Receive_CLIENT_ACK (Packet &p) override
| Tell the server we are done with this frame: uint32_t Current frame counter of the client. More...
NetworkRecvStatus | Receive_CLIENT_COMMAND (Packet &p) override
| The client has done a command and wants us to handle it. More...
NetworkRecvStatus | Receive_CLIENT_CHAT (Packet &p) override
| Sends a chat-packet to the server: uint8_t ID of the action (see NetworkAction). More...
NetworkRecvStatus | Receive_CLIENT_SET_PASSWORD (Packet &p) override
| Set the password for the clients current company: string The password. More...
NetworkRecvStatus | Receive_CLIENT_SET_NAME (Packet &p) override
| Gives the client a new name: string New name of the client. More...
NetworkRecvStatus | Receive_CLIENT_QUIT (Packet &p) override
| The client is quitting the game. More...
NetworkRecvStatus | Receive_CLIENT_ERROR (Packet &p) override
| The client made an error and is quitting the game. More...
NetworkRecvStatus | Receive_CLIENT_RCON (Packet &p) override
| Send an RCon command to the server: string RCon password. More...
NetworkRecvStatus | Receive_CLIENT_NEWGRFS_CHECKED (Packet &p) override
| Tell the server that we have the required GRFs. More...
NetworkRecvStatus | Receive_CLIENT_MOVE (Packet &p) override
| Request the server to move this client into another company: uint8_t ID of the company the client wants to join. More...
NetworkRecvStatus | SendGameInfo ()
| Send the client information about the server.
NetworkRecvStatus | SendNewGRFCheck ()
| Send the check for the NewGRFs.
NetworkRecvStatus | SendWelcome ()
| Send the client a welcome message with some basic information.
NetworkRecvStatus | SendNeedGamePassword ()
| Request the game password.
NetworkRecvStatus | SendNeedCompanyPassword ()
| Request the company password.
Protected Member Functions inherited from NetworkGameSocketHandler
NetworkRecvStatus | ReceiveInvalidPacket (PacketGameType type)
| Helper for logging receiving invalid packets. More...
virtual NetworkRecvStatus | Receive_SERVER_FULL (Packet &p)
| Notification that the server is full. More...
virtual NetworkRecvStatus | Receive_SERVER_BANNED (Packet &p)
| Notification that the client trying to join is banned. More...
virtual NetworkRecvStatus | Receive_SERVER_ERROR (Packet &p)
| The client made an error: uint8_t Error code caused (see NetworkErrorCode). More...
virtual NetworkRecvStatus | Receive_SERVER_GAME_INFO (Packet &p)
| Sends information about the game. More...
virtual NetworkRecvStatus | Receive_SERVER_CLIENT_INFO (Packet &p)
| Send information about a client: uint32_t ID of the client (always unique on a server. More...
virtual NetworkRecvStatus | Receive_SERVER_NEED_GAME_PASSWORD (Packet &p)
| Indication to the client that the server needs a game password. More...
virtual NetworkRecvStatus | Receive_SERVER_NEED_COMPANY_PASSWORD (Packet &p)
| Indication to the client that the server needs a company password: uint32_t Generation seed. More...
virtual NetworkRecvStatus | Receive_SERVER_WELCOME (Packet &p)
| The client is joined and ready to receive their map: uint32_t Own client ID. More...
virtual NetworkRecvStatus | Receive_SERVER_WAIT (Packet &p)
| Notification that another client is currently receiving the map: uint8_t Number of clients waiting in front of you. More...
virtual NetworkRecvStatus | Receive_SERVER_MAP_BEGIN (Packet &p)
| Sends that the server will begin with sending the map to the client: uint32_t Current frame. More...
virtual NetworkRecvStatus | Receive_SERVER_MAP_SIZE (Packet &p)
| Sends the size of the map to the client. More...
virtual NetworkRecvStatus | Receive_SERVER_MAP_DATA (Packet &p)
| Sends the data of the map to the client: Contains a part of the map (until max size of packet). More...
virtual NetworkRecvStatus | Receive_SERVER_MAP_DONE (Packet &p)
| Sends that all data of the map are sent to the client: More...
virtual NetworkRecvStatus | Receive_SERVER_JOIN (Packet &p)
| A client joined (PACKET_CLIENT_MAP_OK), what usually directly follows is a PACKET_SERVER_CLIENT_INFO: uint32_t ID of the client that just joined the game. More...
virtual NetworkRecvStatus | Receive_SERVER_FRAME (Packet &p)
| Sends the current frame counter to the client: uint32_t Frame counter uint32_t Frame counter max (how far may the client walk before the server?) uint32_t General seed 1 (dependent on compile settings, not default). More...
virtual NetworkRecvStatus | Receive_SERVER_SYNC (Packet &p)
| Sends a sync-check to the client: uint32_t Frame counter. More...
virtual NetworkRecvStatus | Receive_SERVER_COMMAND (Packet &p)
| Sends a DoCommand to the client: uint8_t ID of the company (0..MAX_COMPANIES-1). More...
virtual NetworkRecvStatus | Receive_SERVER_CHAT (Packet &p)
| Sends a chat-packet to the client: uint8_t ID of the action (see NetworkAction). More...
virtual NetworkRecvStatus | Receive_SERVER_EXTERNAL_CHAT (Packet &p)
| Sends a chat-packet for external source to the client: string Name of the source this message came from. More...
virtual NetworkRecvStatus | Receive_SERVER_QUIT (Packet &p)
| Notification that a client left the game: uint32_t ID of the client. More...
virtual NetworkRecvStatus | Receive_SERVER_ERROR_QUIT (Packet &p)
| Inform all clients that one client made an error and thus has quit/been disconnected: uint32_t ID of the client that caused the error. More...
virtual NetworkRecvStatus | Receive_SERVER_SHUTDOWN (Packet &p)
| Let the clients know that the server is closing. More...
virtual NetworkRecvStatus | Receive_SERVER_NEWGAME (Packet &p)
| Let the clients know that the server is loading a new map. More...
virtual NetworkRecvStatus | Receive_SERVER_RCON (Packet &p)
| Send the result of an issues RCon command back to the client: uint16_t Colour code. More...
virtual NetworkRecvStatus | Receive_SERVER_CHECK_NEWGRFS (Packet &p)
| Sends information about all used GRFs to the client: uint8_t Amount of GRFs (the following data is repeated this many times, i.e. More...
virtual NetworkRecvStatus | Receive_SERVER_MOVE (Packet &p)
| Move a client from one company into another: uint32_t ID of the client. More...
virtual NetworkRecvStatus | Receive_SERVER_COMPANY_UPDATE (Packet &p)
| Update the clients knowledge of which company is password protected: uint16_t Bitwise representation of each company. More...
virtual NetworkRecvStatus | Receive_SERVER_CONFIG_UPDATE (Packet &p)
| Update the clients knowledge of the max settings: uint8_t Maximum number of companies allowed. More...
NetworkRecvStatus | HandlePacket (Packet &p)
| Handle the given packet, i.e. More...
| NetworkGameSocketHandler (SOCKET s)
| Create a new socket for the game connection. More...

## Detailed Description

Class for handling the server side of the game connection.

Definition at line 24 of file network_server.h.

## Member Enumeration Documentation

## ◆ ClientStatus

enum ServerNetworkGameSocketHandler::ClientStatus

Status of a client.

Enumerator
STATUS_INACTIVE | The client is not connected nor active.
STATUS_NEWGRFS_CHECK | The client is checking NewGRFs.
STATUS_AUTH_GAME | The client is authorizing with game (server) password.
STATUS_AUTH_COMPANY | The client is authorizing with company password.
STATUS_AUTHORIZED | The client is authorized.
STATUS_MAP_WAIT | The client is waiting as someone else is downloading the map.
STATUS_MAP | The client is downloading the map.
STATUS_DONE_MAP | The client has downloaded the map.
STATUS_PRE_ACTIVE | The client is catching up the delayed frames.
STATUS_ACTIVE | The client is active within in the game.
STATUS_END | Must ALWAYS be on the end of this list!! (period).

Definition at line 51 of file network_server.h.

## Constructor & Destructor Documentation

## ◆ ServerNetworkGameSocketHandler()

ServerNetworkGameSocketHandler::ServerNetworkGameSocketHandler | ( | SOCKET | s | ) |

Create a new socket for the server side of the game connection.

Parameters

  s | The socket to connect with.

Definition at line 188 of file network_server.cpp.

References _network_client_id, _settings_client, NetworkSettings::bytes_per_frame_burst, NetworkGameSocketHandler::client_id, Debug, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::MAX_SIZE, ClientSettings::network, receive_limit, status, and STATUS_INACTIVE.

Referenced by AcceptConnection().

## Member Function Documentation

## ◆ AcceptConnection()

void ServerNetworkGameSocketHandler::AcceptConnection | ( | SOCKET | s,
|  | const NetworkAddress & | address
| ) |  |
| static

Handle the accepting of a connection to the server.

Parameters

  s | The socket of the new connection.
  address | The address of the peer.

Definition at line 557 of file network.cpp.

References _network_clients_connected, client_address, InvalidateWindowData(), ServerNetworkGameSocketHandler(), and WC_CLIENT_LIST.

Referenced by ClientNetworkCoordinatorSocketHandler::ConnectSuccess().

## ◆ AllowConnection()

bool ServerNetworkGameSocketHandler::AllowConnection | ( |  | ) |
| static

Whether an connection is allowed or not at this moment.

Returns
  true if the connection is allowed.

Definition at line 288 of file network_server.cpp.

References _network_clients_connected, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_networkclientsocket_pool >::CanAllocateItem(), MAX_CLIENTS, and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::MAX_SIZE.

## ◆ CloseConnection()

NetworkRecvStatus ServerNetworkGameSocketHandler::CloseConnection | ( | NetworkRecvStatus | status | ) |
| overridevirtual

Close the network connection due to the given status.

Parameters

  status | The reason the connection got closed.

Implements NetworkGameSocketHandler.

Definition at line 231 of file network_server.cpp.

References GetClientName(), NetworkSocketHandler::HasClientQuit(), NETWORK_RECV_STATUS_CLIENT_QUIT, NETWORK_RECV_STATUS_OKAY, NETWORK_RECV_STATUS_SERVER_ERROR, NetworkTCPSocketHandler::sock, status, and STATUS_AUTHORIZED.

Referenced by Receive_CLIENT_ERROR(), Receive_CLIENT_QUIT(), SendNeedCompanyPassword(), SendNeedGamePassword(), and SendWelcome().

## ◆ GetByClientID()

ServerNetworkGameSocketHandler * ServerNetworkGameSocketHandler::GetByClientID | ( | ClientID | client_id | ) |
| static

Return the client state given it's client-identifier.

Parameters

  client_id | the ClientID to search for

Returns
  return a pointer to the corresponding NetworkClientSocket struct or nullptr when not found

Definition at line 134 of file network.cpp.

References NetworkGameSocketHandler::client_id.

## ◆ GetClientIP()

const std::string & ServerNetworkGameSocketHandler::GetClientIP | ( |  | ) |

Get the IP address/hostname of the connected client.

Returns
  The IP address.

Definition at line 1951 of file network_server.cpp.

References client_address, and NetworkAddress::GetHostname().

## ◆ GetClientName()

std::string ServerNetworkGameSocketHandler::GetClientName | ( |  | ) | const

Get the name of the client, if the user did not send it yet, Client ID is used.

Parameters

  client_name | The variable to write the name to.
  last | The pointer to the last element of the destination buffer

Definition at line 2150 of file network_server.cpp.

References NetworkGameSocketHandler::client_id, NetworkClientInfo::client_name, and NetworkGameSocketHandler::GetInfo().

Referenced by CloseConnection(), Receive_CLIENT_ERROR(), Receive_CLIENT_MAP_OK(), Receive_CLIENT_QUIT(), and SendError().

## ◆ GetName()

static const char* ServerNetworkGameSocketHandler::GetName | ( |  | ) |
| inlinestatic

Get the name used by the listener.

Returns
  the name to show in debug logs and the like.

Definition at line 112 of file network_server.h.

Referenced by ClientNetworkCoordinatorSocketHandler::ConnectSuccess().

## ◆ Receive_CLIENT_ACK()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_ACK | ( | Packet & | p | ) |
| overrideprotectedvirtual

Tell the server we are done with this frame: uint32_t Current frame counter of the client.

uint8_t The random token that the server sent in the PACKET_SERVER_FRAME packet.

Parameters

  p | The packet that was just received.

Reimplemented from NetworkGameSocketHandler.

Definition at line 1176 of file network_server.cpp.

References SendError(), status, and STATUS_AUTHORIZED.

## ◆ Receive_CLIENT_CHAT()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_CHAT | ( | Packet & | p | ) |
| overrideprotectedvirtual

Sends a chat-packet to the server: uint8_t ID of the action (see NetworkAction).

uint8_t ID of the destination type (see DestType). uint32_t ID of the client or company (destination of the chat). string Message (max NETWORK_CHAT_LENGTH). uint64_t data (used e.g. for 'give money' actions).

Parameters

  p | The packet that was just received.

Reimplemented from NetworkGameSocketHandler.

Definition at line 1361 of file network_server.cpp.

References SendError(), status, and STATUS_PRE_ACTIVE.

## ◆ Receive_CLIENT_COMMAND()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_COMMAND | ( | Packet & | p | ) |
| overrideprotectedvirtual

The client has done a command and wants us to handle it.

Parameters

  p | the packet in which the command was sent

Only CMD_COMPANY_CTRL is always allowed, for the rest, playas needs to match the company in the packet. If it doesn't, the client has done something pretty naughty (or a bug), and will be kicked

Reimplemented from NetworkGameSocketHandler.

Definition at line 1054 of file network_server.cpp.

References NetworkSocketHandler::HasClientQuit(), and SendError().

## ◆ Receive_CLIENT_COMPANY_PASSWORD()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_COMPANY_PASSWORD | ( | Packet & | p | ) |
| overrideprotectedvirtual

Send a password to the server to authorize uint8_t Password type (see NetworkPasswordType).

string The password.

Parameters

  p | The packet that was just received.

Reimplemented from NetworkGameSocketHandler.

Definition at line 957 of file network_server.cpp.

References SendError(), status, and STATUS_AUTH_COMPANY.

## ◆ Receive_CLIENT_ERROR()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_ERROR | ( | Packet & | p | ) |
| overrideprotectedvirtual

The client made an error and is quitting the game.

uint8_t Error of the code caused (see NetworkErrorCode).

Parameters

  p | The packet that was just received.

Reimplemented from NetworkGameSocketHandler.

Definition at line 1121 of file network_server.cpp.

References NetworkGameSocketHandler::client_id, CloseConnection(), Debug, GetClientName(), GetNetworkErrorMsg(), GetString(), NetworkSocketHandler::HasClientQuit(), NETWORK_RECV_STATUS_CLIENT_QUIT, and Packet::Recv_uint8().

## ◆ Receive_CLIENT_GAME_INFO()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_GAME_INFO | ( | Packet & | p | ) |
| overrideprotectedvirtual

Request game information.

Parameters

  p | The packet that was just received.

Reimplemented from NetworkGameSocketHandler.

Definition at line 840 of file network_server.cpp.

References NetworkGameSocketHandler::client_id, Debug, and SendGameInfo().

## ◆ Receive_CLIENT_GAME_PASSWORD()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_GAME_PASSWORD | ( | Packet & | p | ) |
| overrideprotectedvirtual

Send a password to the server to authorize: uint8_t Password type (see NetworkPasswordType).

string The password.

Parameters

  p | The packet that was just received.

Reimplemented from NetworkGameSocketHandler.

Definition at line 937 of file network_server.cpp.

References SendError(), status, and STATUS_AUTH_GAME.

## ◆ Receive_CLIENT_GETMAP()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_GETMAP | ( | Packet & | p | ) |
| overrideprotectedvirtual

Request the map from the server.

uint32_t NewGRF version (release versions of OpenTTD only).

Parameters

  p | The packet that was just received.

Reimplemented from NetworkGameSocketHandler.

Definition at line 980 of file network_server.cpp.

References NetworkSocketHandler::HasClientQuit(), and SendError().

## ◆ Receive_CLIENT_JOIN()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_JOIN | ( | Packet & | p | ) |
| overrideprotectedvirtual

Try to join the server: string OpenTTD revision (norev000 if no revision).

string Name of the client (max NETWORK_NAME_LENGTH). uint8_t ID of the company to play as (1..MAX_COMPANIES). uint8_t ID of the clients Language.

Parameters

  p | The packet that was just received.

Reimplemented from NetworkGameSocketHandler.

Definition at line 859 of file network_server.cpp.

References SendError(), status, and STATUS_INACTIVE.

## ◆ Receive_CLIENT_MAP_OK()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_MAP_OK | ( | Packet & | p | ) |
| overrideprotectedvirtual

Tell the server that we are done receiving/loading the map.

Parameters

  p | The packet that was just received.

Reimplemented from NetworkGameSocketHandler.

Definition at line 1004 of file network_server.cpp.

References NetworkGameSocketHandler::client_id, Debug, GetClientName(), NetworkSocketHandler::HasClientQuit(), status, and STATUS_DONE_MAP.

## ◆ Receive_CLIENT_MOVE()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_MOVE | ( | Packet & | p | ) |
| overrideprotectedvirtual

Request the server to move this client into another company: uint8_t ID of the company the client wants to join.

string Password, if the company is password protected.

Parameters

  p | The packet that was just received.

Reimplemented from NetworkGameSocketHandler.

Definition at line 1465 of file network_server.cpp.

References SendError(), status, and STATUS_ACTIVE.

## ◆ Receive_CLIENT_NEWGRFS_CHECKED()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_NEWGRFS_CHECKED | ( | Packet & | p | ) |
| overrideprotectedvirtual

Tell the server that we have the required GRFs.

Parameters

  p | The packet that was just received.

Reimplemented from NetworkGameSocketHandler.

Definition at line 847 of file network_server.cpp.

References SendError(), status, and STATUS_NEWGRFS_CHECK.

## ◆ Receive_CLIENT_QUIT()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_QUIT | ( | Packet & | p | ) |
| overrideprotectedvirtual

The client is quitting the game.

Parameters

  p | The packet that was just received.

Reimplemented from NetworkGameSocketHandler.

Definition at line 1152 of file network_server.cpp.

References NetworkGameSocketHandler::client_id, CloseConnection(), Debug, GetClientName(), NetworkSocketHandler::HasClientQuit(), and NETWORK_RECV_STATUS_CLIENT_QUIT.

## ◆ Receive_CLIENT_RCON()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_RCON | ( | Packet & | p | ) |
| overrideprotectedvirtual

Send an RCon command to the server: string RCon password.

string Command to be executed.

Parameters

  p | The packet that was just received.

Reimplemented from NetworkGameSocketHandler.

Definition at line 1441 of file network_server.cpp.

References SendError(), status, and STATUS_ACTIVE.

## ◆ Receive_CLIENT_SET_NAME()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_SET_NAME | ( | Packet & | p | ) |
| overrideprotectedvirtual

Gives the client a new name: string New name of the client.

Parameters

  p | The packet that was just received.

Reimplemented from NetworkGameSocketHandler.

Definition at line 1407 of file network_server.cpp.

References SendError(), status, and STATUS_ACTIVE.

## ◆ Receive_CLIENT_SET_PASSWORD()

NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_SET_PASSWORD | ( | Packet & | p | ) |
| overrideprotectedvirtual

Set the password for the clients current company: string The password.

Parameters

  p | The packet that was just received.

Reimplemented from NetworkGameSocketHandler.

Definition at line 1391 of file network_server.cpp.

References SendError(), status, and STATUS_ACTIVE.

## ◆ ReceivePacket()

std::unique_ptr< Packet > ServerNetworkGameSocketHandler::ReceivePacket | ( |  | ) |
| overridevirtual

Receives a packet for the given client.

Returns
  The received packet (or nullptr when it didn't receive one)

Reimplemented from NetworkTCPSocketHandler.

Definition at line 218 of file network_server.cpp.

References receive_limit, and NetworkTCPSocketHandler::ReceivePacket().

## ◆ SendChat()

NetworkRecvStatus ServerNetworkGameSocketHandler::SendChat | ( | NetworkAction | action,
|  | ClientID | client_id,
|  | bool | self_send,
|  | const std::string & | msg,
|  | int64_t | data
| ) |  |

Send a chat message.

Parameters

  action | The action associated with the message.
  client_id | The origin of the chat message.
  self_send | Whether we did send the message.
  msg | The actual message.
  data | Arbitrary extra data.

Definition at line 680 of file network_server.cpp.

References NetworkGameSocketHandler::client_id, Debug, NETWORK_RECV_STATUS_OKAY, PACKET_SERVER_CHAT, NetworkTCPSocketHandler::SendPacket(), status, and STATUS_PRE_ACTIVE.

## ◆ SendClientInfo()

NetworkRecvStatus ServerNetworkGameSocketHandler::SendClientInfo | ( | NetworkClientInfo * | ci | ) |

Send the client information about a client.

Parameters

  ci | The client to send information about.

Definition at line 323 of file network_server.cpp.

References NetworkClientInfo::client_id, NetworkGameSocketHandler::client_id, NetworkClientInfo::client_name, NetworkClientInfo::client_playas, Debug, INVALID_CLIENT_ID, NETWORK_RECV_STATUS_OKAY, PACKET_SERVER_CLIENT_INFO, and NetworkTCPSocketHandler::SendPacket().

Referenced by SendWelcome().

## ◆ SendCommand()

NetworkRecvStatus ServerNetworkGameSocketHandler::SendCommand | ( | const CommandPacket & | cp | ) |

Send a command to the client to execute.

Parameters

  cp | The command to send.

Definition at line 658 of file network_server.cpp.

References NetworkGameSocketHandler::client_id, CommandPacket::cmd, Debug, CommandPacket::frame, CommandPacket::my_cmd, NETWORK_RECV_STATUS_OKAY, PACKET_SERVER_COMMAND, NetworkGameSocketHandler::SendCommand(), and NetworkTCPSocketHandler::SendPacket().

## ◆ SendError()

NetworkRecvStatus ServerNetworkGameSocketHandler::SendError | ( | NetworkErrorCode | error,
|  | const std::string & | reason = `{}`
| ) |  |

Send an error to the client, and close its connection.

Parameters

  error | The error to disconnect for.
  reason | In case of kicking a client, specifies the reason for kicking the client.

Definition at line 356 of file network_server.cpp.

References NetworkGameSocketHandler::client_id, Debug, GetClientName(), GetNetworkErrorMsg(), GetString(), PACKET_SERVER_ERROR, NetworkTCPSocketHandler::SendPacket(), status, and STATUS_AUTHORIZED.

Referenced by Receive_CLIENT_ACK(), Receive_CLIENT_CHAT(), Receive_CLIENT_COMMAND(), Receive_CLIENT_COMPANY_PASSWORD(), Receive_CLIENT_GAME_PASSWORD(), Receive_CLIENT_GETMAP(), Receive_CLIENT_JOIN(), Receive_CLIENT_MOVE(), Receive_CLIENT_NEWGRFS_CHECKED(), Receive_CLIENT_RCON(), Receive_CLIENT_SET_NAME(), Receive_CLIENT_SET_PASSWORD(), and SendMap().

## ◆ SendErrorQuit()

NetworkRecvStatus ServerNetworkGameSocketHandler::SendErrorQuit | ( | ClientID | client_id,
|  | NetworkErrorCode | errorno
| ) |  |

Tell the client another client quit with an error.

Parameters

  client_id | The client that quit.
  errorno | The reason the client quit.

Definition at line 727 of file network_server.cpp.

References NetworkGameSocketHandler::client_id, Debug, NETWORK_RECV_STATUS_OKAY, PACKET_SERVER_ERROR_QUIT, and NetworkTCPSocketHandler::SendPacket().

## ◆ SendExternalChat()

NetworkRecvStatus ServerNetworkGameSocketHandler::SendExternalChat | ( | const std::string & | source,
|  | TextColour | colour,
|  | const std::string & | user,
|  | const std::string & | msg
| ) |  |

Send a chat message from external source.

Parameters

  source | Name of the source this message came from.
  colour | TextColour to use for the message.
  user | Name of the user who sent the messsage.
  msg | The actual message.

Definition at line 705 of file network_server.cpp.

References NetworkGameSocketHandler::client_id, Debug, NETWORK_RECV_STATUS_OKAY, PACKET_SERVER_EXTERNAL_CHAT, NetworkTCPSocketHandler::SendPacket(), status, and STATUS_PRE_ACTIVE.

## ◆ SendJoin()

NetworkRecvStatus ServerNetworkGameSocketHandler::SendJoin | ( | ClientID | client_id | ) |

Tell that a client joined.

Parameters

  client_id | The client that joined.

Definition at line 603 of file network_server.cpp.

References NetworkGameSocketHandler::client_id, Debug, NETWORK_RECV_STATUS_OKAY, PACKET_SERVER_JOIN, and NetworkTCPSocketHandler::SendPacket().

## ◆ SendMove()

NetworkRecvStatus ServerNetworkGameSocketHandler::SendMove | ( | ClientID | client_id,
|  | CompanyID | company_id
| ) |  |

Tell that a client moved to another company.

Parameters

  client_id | The client that moved.
  company_id | The company the client moved to.

Definition at line 798 of file network_server.cpp.

References NetworkGameSocketHandler::client_id, Debug, NETWORK_RECV_STATUS_OKAY, PACKET_SERVER_MOVE, and NetworkTCPSocketHandler::SendPacket().

## ◆ SendQuit()

NetworkRecvStatus ServerNetworkGameSocketHandler::SendQuit | ( | ClientID | client_id | ) |

Tell the client another client quit.

Parameters

  client_id | The client that quit.

Definition at line 744 of file network_server.cpp.

References NetworkGameSocketHandler::client_id, Debug, NETWORK_RECV_STATUS_OKAY, PACKET_SERVER_QUIT, and NetworkTCPSocketHandler::SendPacket().

## ◆ SendRConResult()

NetworkRecvStatus ServerNetworkGameSocketHandler::SendRConResult | ( | uint16_t | colour,
|  | const std::string & | command
| ) |  |

Send the result of a console action.

Parameters

  colour | The colour of the result.
  command | The command that was executed.

Definition at line 781 of file network_server.cpp.

The documentation for this class was generated from the following files:

- src/network/network_server.h
- src/network/network.cpp
- src/network/network_server.cpp