OpenTTD Source
1.11.0-beta2
|
Go to the documentation of this file.
12 #ifndef NETWORK_CORE_TCP_GAME_H
13 #define NETWORK_CORE_TCP_GAME_H
17 #include "../network_type.h"
18 #include "../../core/pool_type.hpp"
539 assert(
info !=
nullptr && this->info ==
nullptr);
CommandPacket * last
The last packet in the queue; only valid when first != nullptr.
@ PACKET_CLIENT_ERROR
A client reports an error to the server.
@ PACKET_SERVER_ERROR
Server sending an error message to the client.
virtual NetworkRecvStatus Receive_CLIENT_SET_NAME(Packet *p)
Gives the client a new name: string New name of the client.
NetworkRecvStatus ReceivePackets()
Do the actual receiving of packets.
virtual NetworkRecvStatus Receive_CLIENT_MAP_OK(Packet *p)
Tell the server that we are done receiving/loading the map.
NetworkGameSocketHandler(SOCKET s)
Create a new socket for the game connection.
virtual NetworkRecvStatus Receive_SERVER_MAP_BEGIN(Packet *p)
Sends that the server will begin with sending the map to the client: uint32 Current frame.
uint Count() const
Get the number of items in the queue.
@ PACKET_SERVER_CONFIG_UPDATE
Some network configuration important to the client changed.
PacketGameType
Enum with all types of TCP packets.
std::chrono::steady_clock::time_point last_packet
Time we received the last frame.
void SetInfo(NetworkClientInfo *info)
Sets the client info for this socket handler.
NetworkRecvStatus ReceiveInvalidPacket(PacketGameType type)
Helper for logging receiving invalid packets.
@ PACKET_CLIENT_COMMAND
Client executed a command and sends it to the server.
@ PACKET_SERVER_NEWGAME
The server is preparing to start a new game.
uint32 last_frame_server
Last frame the server has executed.
virtual NetworkRecvStatus Receive_SERVER_RCON(Packet *p)
Send the result of an issues RCon command back to the client: uint16 Colour code.
@ PACKET_SERVER_WAIT
Server tells the client there are some people waiting for the map as well.
@ PACKET_SERVER_JOIN
Tells clients that a new client has joined.
@ PACKET_CLIENT_QUIT
A client tells the server it is going to quit.
@ PACKET_CLIENT_GETMAP
Client requests the actual map.
virtual NetworkRecvStatus Receive_CLIENT_ACK(Packet *p)
Tell the server we are done with this frame: uint32 Current frame counter of the client.
virtual NetworkRecvStatus Receive_SERVER_ERROR_QUIT(Packet *p)
Inform all clients that one client made an error and thus has quit/been disconnected: uint32 ID of th...
virtual NetworkRecvStatus Receive_SERVER_SYNC(Packet *p)
Sends a sync-check to the client: uint32 Frame counter.
virtual NetworkRecvStatus Receive_SERVER_NEED_COMPANY_PASSWORD(Packet *p)
Indication to the client that the server needs a company password: uint32 Generation seed.
Base socket handler for all TCP sockets.
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).
@ PACKET_CLIENT_CHAT
Client said something that should be distributed.
@ PACKET_SERVER_MAP_SIZE
Server tells the client what the (compressed) size of the map is.
@ PACKET_SERVER_MAP_DONE
Server tells it has just sent the last bits of the map to the client.
@ PACKET_CLIENT_JOIN
The client telling the server it wants to join.
virtual NetworkRecvStatus Receive_SERVER_COMPANY_INFO(Packet *p)
Sends information about the companies (one packet per company): uint8 Version of the structure of thi...
@ PACKET_END
Must ALWAYS be on the end of this list!! (period)
void Append(CommandPacket *p)
Append a CommandPacket at the end of the queue.
virtual NetworkRecvStatus Receive_CLIENT_MOVE(Packet *p)
Request the server to move this client into another company: uint8 ID of the company the client wants...
virtual NetworkRecvStatus Receive_SERVER_MOVE(Packet *p)
Move a client from one company into another: uint32 ID of the client.
NetworkRecvStatus HandlePacket(Packet *p)
Handle the given packet, i.e.
@ PACKET_SERVER_NEED_GAME_PASSWORD
Server requests the (hashed) game password.
virtual NetworkRecvStatus Receive_CLIENT_RCON(Packet *p)
Send an RCon command to the server: string RCon password.
Everything we need to know about a command to be able to execute it.
@ PACKET_SERVER_SHUTDOWN
The server is shutting down.
@ PACKET_SERVER_NEED_COMPANY_PASSWORD
Server requests the (hashed) company password.
virtual NetworkRecvStatus Receive_SERVER_QUIT(Packet *p)
Notification that a client left the game: uint32 ID of the client.
@ PACKET_SERVER_COMPANY_UPDATE
Information (password) of a company changed.
virtual NetworkRecvStatus Receive_CLIENT_GAME_PASSWORD(Packet *p)
Send a password to the server to authorize: uint8 Password type (see NetworkPasswordType).
@ PACKET_CLIENT_COMPANY_INFO
Request information about all companies.
ClientID
'Unique' identifier to be given to clients
~CommandQueue()
Clear the command queue.
@ PACKET_SERVER_BANNED
The server has banned you.
virtual NetworkRecvStatus Receive_SERVER_WELCOME(Packet *p)
The client is joined and ready to receive his map: uint32 Own client ID.
@ PACKET_CLIENT_NEWGRFS_CHECKED
Client acknowledges that it has all required NewGRFs.
virtual NetworkRecvStatus Receive_SERVER_MAP_DONE(Packet *p)
Sends that all data of the map are sent to the client:
CommandQueue()
Initialise the command queue.
virtual NetworkRecvStatus Receive_SERVER_NEED_GAME_PASSWORD(Packet *p)
Indication to the client that the server needs a game password.
virtual NetworkRecvStatus Receive_CLIENT_GETMAP(Packet *p)
Request the map from the server.
A queue of CommandPackets.
virtual NetworkRecvStatus Receive_SERVER_MAP_SIZE(Packet *p)
Sends the size of the map to the client.
virtual NetworkRecvStatus Receive_CLIENT_CHAT(Packet *p)
Sends a chat-packet to the server: uint8 ID of the action (see NetworkAction).
virtual NetworkRecvStatus Receive_CLIENT_SET_PASSWORD(Packet *p)
Set the password for the clients current company: string The password.
@ PACKET_CLIENT_MAP_OK
Client tells the server that it received the whole map.
Internal entity of a packet.
const char * ReceiveCommand(Packet *p, CommandPacket *cp)
Receives a command from the network.
@ PACKET_SERVER_COMPANY_INFO
Information about a single company.
virtual NetworkRecvStatus Receive_CLIENT_COMMAND(Packet *p)
Send a DoCommand to the Server: uint8 ID of the company (0..MAX_COMPANIES-1).
@ PACKET_SERVER_MOVE
Server tells everyone that someone is moved to another company.
virtual NetworkRecvStatus Receive_CLIENT_COMPANY_INFO(Packet *p)
Request company information (in detail).
@ PACKET_SERVER_FULL
The server is full and has no place for you.
virtual NetworkRecvStatus Receive_SERVER_WAIT(Packet *p)
Notification that another client is currently receiving the map: uint8 Number of clients waiting in f...
@ PACKET_CLIENT_SET_NAME
A client changes its name.
virtual NetworkRecvStatus Receive_SERVER_FULL(Packet *p)
Notification that the server is full.
NetworkClientInfo * GetInfo() const
Gets the client info of this socket handler.
CommandPacket * first
The first packet in the queue.
virtual NetworkRecvStatus Receive_SERVER_JOIN(Packet *p)
A client joined (PACKET_CLIENT_MAP_OK), what usually directly follows is a PACKET_SERVER_CLIENT_INFO:...
virtual NetworkRecvStatus Receive_SERVER_COMMAND(Packet *p)
Sends a DoCommand to the client: uint8 ID of the company (0..MAX_COMPANIES-1).
virtual NetworkRecvStatus Receive_SERVER_NEWGAME(Packet *p)
Let the clients know that the server is loading a new map.
@ PACKET_SERVER_ERROR_QUIT
A server tells that a client has hit an error and did quit.
void Free()
Free everything that is in the queue.
@ PACKET_CLIENT_GAME_PASSWORD
Clients sends the (hashed) game password.
virtual NetworkRecvStatus Receive_SERVER_CLIENT_INFO(Packet *p)
Send information about a client: uint32 ID of the client (always unique on a server.
NetworkRecvStatus
Status of a network client; reasons why a client has quit.
NetworkClientInfo * info
Client info related to this socket.
uint count
The number of items in the queue.
@ PACKET_SERVER_SYNC
Server tells the client what the random state should be.
virtual NetworkRecvStatus Receive_SERVER_CHECK_NEWGRFS(Packet *p)
Sends information about all used GRFs to the client: uint8 Amount of GRFs (the following data is repe...
@ PACKET_SERVER_MAP_BEGIN
Server tells the client that it is beginning to send the map.
@ PACKET_CLIENT_RCON
Client asks the server to execute some command.
@ PACKET_SERVER_CHAT
Server distributing the message of a client (or itself).
@ PACKET_SERVER_RCON
Response of the executed command on the server.
@ PACKET_SERVER_QUIT
A server tells that a client has quit.
CommandQueue incoming_queue
The command-queue awaiting handling.
void CDECL error(const char *s,...)
Error handling for fatal non-user errors.
ClientID client_id
Client identifier.
CommandPacket * Peek(bool ignore_paused=false)
Return the first item in the queue, but don't remove it.
virtual NetworkRecvStatus Receive_CLIENT_NEWGRFS_CHECKED(Packet *p)
Tell the server that we have the required GRFs.
@ PACKET_SERVER_COMMAND
Server distributes a command to (all) the clients.
virtual NetworkRecvStatus Receive_CLIENT_QUIT(Packet *p)
The client is quitting the game.
@ PACKET_SERVER_FRAME
Server tells the client what frame it is in, and thus to where the client may progress.
NetworkRecvStatus CloseConnection(bool error=true) override
Functions to help ReceivePacket/SendPacket a bit A socket can make errors.
@ PACKET_CLIENT_ACK
The client tells the server which frame it has executed.
@ PACKET_CLIENT_MOVE
A client would like to be moved to another company.
virtual NetworkRecvStatus Receive_SERVER_ERROR(Packet *p)
The client made an error: uint8 Error code caused (see NetworkErrorCode).
@ PACKET_SERVER_CLIENT_INFO
Server sends you information about a client.
virtual NetworkRecvStatus Receive_SERVER_CONFIG_UPDATE(Packet *p)
Update the clients knowledge of the max settings: uint8 Maximum number of companies allowed.
void SendCommand(Packet *p, const CommandPacket *cp)
Sends a command over the network.
virtual NetworkRecvStatus Receive_SERVER_CHAT(Packet *p)
Sends a chat-packet to the client: uint8 ID of the action (see NetworkAction).
@ PACKET_SERVER_WELCOME
Server welcomes you and gives you your ClientID.
virtual NetworkRecvStatus Receive_SERVER_COMPANY_UPDATE(Packet *p)
Update the clients knowledge of which company is password protected: uint16 Bitwise representation of...
@ PACKET_SERVER_CHECK_NEWGRFS
Server sends NewGRF IDs and MD5 checksums for the client to check.
virtual NetworkRecvStatus Receive_SERVER_FRAME(Packet *p)
Sends the current frame counter to the client: uint32 Frame counter uint32 Frame counter max (how far...
virtual NetworkRecvStatus Receive_SERVER_BANNED(Packet *p)
Notification that the client trying to join is banned.
uint32 last_frame
Last frame we have executed.
virtual NetworkRecvStatus Receive_SERVER_SHUTDOWN(Packet *p)
Let the clients know that the server is closing.
virtual NetworkRecvStatus Receive_CLIENT_ERROR(Packet *p)
The client made an error and is quitting the game.
Container for all information known about a client.
virtual NetworkRecvStatus Receive_CLIENT_JOIN(Packet *p)
Try to join the server: string OpenTTD revision (norev000 if no revision).
@ PACKET_CLIENT_SET_PASSWORD
A client (re)sets its company's password.
@ PACKET_CLIENT_COMPANY_PASSWORD
Client sends the (hashed) company password.
@ PACKET_SERVER_MAP_DATA
Server sends bits of the map to the client.
Base socket handler for all TCP sockets.
virtual NetworkRecvStatus Receive_CLIENT_COMPANY_PASSWORD(Packet *p)
Send a password to the server to authorize uint8 Password type (see NetworkPasswordType).
CommandPacket * Pop(bool ignore_paused=false)
Return the first item in the queue and remove it from the queue.