OpenTTD Source
20240919-master-gdf0233f4c2
|
Go to the documentation of this file.
10 #ifndef NETWORK_SERVER_H
11 #define NETWORK_SERVER_H
84 void CheckNextClientToSendMap(NetworkClientSocket *ignore_cs =
nullptr);
119 std::string_view GetPeerPublicKey()
const {
return this->
peer_public_key; }
NetworkRecvStatus SendEnableEncryption()
Notify the client that the authentication has completed and tell that for the remainder of this socke...
@ STATUS_IDENTIFY
The client is identifying itself.
std::unique_ptr< class NetworkAuthenticationServerHandler > authentication_handler
The handler for the authentication.
NetworkRecvStatus SendCommand(const CommandPacket &cp)
Send a command to the client to execute.
std::vector< CommandPacket > CommandQueue
A "queue" of CommandPackets.
NetworkRecvStatus SendGameInfo()
Send the client information about the server.
@ STATUS_PRE_ACTIVE
The client is catching up the delayed frames.
NetworkRecvStatus Receive_CLIENT_SET_NAME(Packet &p) override
Gives the client a new name: string New name of the client.
NetworkAction
Actions that can be used for NetworkTextMessage.
Owner
Enum for all companies/owners.
NetworkRecvStatus Receive_CLIENT_COMMAND(Packet &p) override
The client has done a command and wants us to handle it.
size_t receive_limit
Amount of bytes that we can receive at this moment.
static const char * GetName()
Get the name used by the listener.
TextColour
Colour of the strings, see _string_colourmap in table/string_colours.h or docs/ottd-colourtext-palett...
@ STATUS_MAP
The client is downloading the map.
@ STATUS_MAP_WAIT
The client is waiting as someone else is downloading the map.
Base socket handler for all TCP sockets.
@ STATUS_ACTIVE
The client is active within in the game.
NetworkRecvStatus Receive_CLIENT_GETMAP(Packet &p) override
Request the map from the server.
NetworkRecvStatus Receive_CLIENT_JOIN(Packet &p) override
Try to join the server: string OpenTTD revision (norev0000 if no revision).
NetworkRecvStatus Receive_CLIENT_GAME_INFO(Packet &p) override
Request game information.
std::string GetClientName() const
Get the name of the client, if the user did not send it yet, Client ID is used.
Template for TCP listeners.
~ServerNetworkGameSocketHandler()
Clear everything related to this client.
ClientStatus
Status of a client.
std::unique_ptr< Packet > ReceivePacket() override
Receives a packet for the given client.
@ STATUS_INACTIVE
The client is not connected nor active.
static void Send()
Send the packets for the server sockets.
Everything we need to know about a command to be able to execute it.
NetworkRecvStatus SendSync()
Request the client to sync.
NetworkRecvStatus SendChat(NetworkAction action, ClientID client_id, bool self_send, const std::string &msg, int64_t data)
Send a chat message.
NetworkRecvStatus SendConfigUpdate()
Send an update about the max company/spectator counts.
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 wan...
NetworkRecvStatus Receive_CLIENT_RCON(Packet &p) override
Send an RCon command to the server: string RCon password.
NetworkRecvStatus SendMove(ClientID client_id, CompanyID company_id)
Tell that a client moved to another company.
NetworkRecvStatus Receive_CLIENT_ERROR(Packet &p) override
The client made an error and is quitting the game.
NetworkRecvStatus SendJoin(ClientID client_id)
Tell that a client joined.
NetworkRecvStatus Receive_CLIENT_AUTH_RESPONSE(Packet &p) override
Send the response to the authentication request: 32 * uint8_t Public key of the client.
NetworkRecvStatus SendFrame()
Tell the client that they may run to a particular frame.
NetworkRecvStatus Receive_CLIENT_ACK(Packet &p) override
Tell the server we are done with this frame: uint32_t Current frame counter of the client.
NetworkRecvStatus SendExternalChat(const std::string &source, TextColour colour, const std::string &user, const std::string &msg)
Send a chat message from external source.
NetworkRecvStatus SendWelcome()
Send the client a welcome message with some basic information.
static ServerNetworkGameSocketHandler * GetByClientID(ClientID client_id)
Return the client state given it's client-identifier.
NetworkRecvStatus SendError(NetworkErrorCode error, const std::string &reason={})
Send an error to the client, and close its connection.
ClientStatus status
Status of this client.
Internal entity of a packet.
NetworkRecvStatus SendClientInfo(NetworkClientInfo *ci)
Send the client information about a client.
static void AcceptConnection(SOCKET s, const NetworkAddress &address)
Handle the accepting of a connection to the server.
@ STATUS_DONE_MAP
The client has downloaded the map.
NetworkRecvStatus SendQuit(ClientID client_id)
Tell the client another client quit.
uint32_t last_token_frame
The last frame we received the right token.
NetworkRecvStatus Receive_CLIENT_IDENTIFY(Packet &p) override
The client tells the server about the identity of the client: string Name of the client (max NETWORK_...
NetworkRecvStatus SendErrorQuit(ClientID client_id, NetworkErrorCode errorno)
Tell the client another client quit with an error.
Class for handling the server side of the game connection.
void NetworkServer_Tick(bool send_frame)
This is called every tick if this is a _network_server.
NetworkRecvStatus Receive_CLIENT_NEWGRFS_CHECKED(Packet &p) override
Tell the server that we have the required GRFs.
Wrapper for (un)resolved network addresses; there's no reason to transform a numeric IP to a string a...
const std::string & GetClientIP()
Get the IP address/hostname of the connected client.
Base class for all pools.
ClientID
'Unique' identifier to be given to clients
NetworkRecvStatus SendNewGame()
Tell the client we're starting a new game.
NetworkRecvStatus Receive_CLIENT_MAP_OK(Packet &p) override
Tell the server that we are done receiving/loading the map.
NetworkRecvStatus
Status of a network client; reasons why a client has quit.
@ STATUS_NEWGRFS_CHECK
The client is checking NewGRFs.
static bool AllowConnection()
Whether an connection is allowed or not at this moment.
std::shared_ptr< struct PacketWriter > savegame
Writer used to write the savegame.
NetworkRecvStatus SendMap()
This sends the map to the client.
NetworkRecvStatus SendNewGRFCheck()
Send the check for the NewGRFs.
ClientID client_id
Client identifier.
Pool< NetworkClientSocket, ClientIndex, 8, MAX_CLIENT_SLOTS, PT_NCLIENT > NetworkClientSocketPool
Pool with all client sockets.
std::string peer_public_key
The public key of our client.
@ STATUS_END
Must ALWAYS be on the end of this list!! (period).
NetworkRecvStatus Receive_CLIENT_CHAT(Packet &p) override
Sends a chat-packet to the server: uint8_t ID of the action (see NetworkAction).
ServerNetworkGameSocketHandler(SOCKET s)
Create a new socket for the server side of the game connection.
NetworkAddress client_address
IP-address of the client (so they can be banned)
ServerNetworkGameSocketHandler NetworkClientSocket
Make the code look slightly nicer/simpler.
NetworkRecvStatus SendAuthRequest()
Request the game password.
NetworkRecvStatus SendShutdown()
Tell the client we're shutting down.
void ChangeNetworkRestartTime(bool reset)
Reset the automatic network restart time interval.
NetworkRecvStatus SendRConResult(uint16_t colour, const std::string &command)
Send the result of a console action.
NetworkRecvStatus Receive_CLIENT_QUIT(Packet &p) override
The client is quitting the game.
uint8_t last_token
The last random token we did send to verify the client is listening.
CommandQueue outgoing_queue
The command-queue awaiting delivery; conceptually more a bucket to gather commands in,...
Base class for all PoolItems.
NetworkClientSocketPool _networkclientsocket_pool
Make very sure the preconditions given in network_type.h are actually followed.
NetworkErrorCode
The error codes we send around in the protocols.
Container for all information known about a client.
NetworkRecvStatus CloseConnection(NetworkRecvStatus status) override
Close the network connection due to the given status.
@ STATUS_AUTH_GAME
The client is authorizing with game (server) password.
NetworkRecvStatus SendWait()
Tell the client that its put in a waiting queue.
uint8_t lag_test
Byte used for lag-testing the client.
@ STATUS_AUTHORIZED
The client is authorized.