OpenTTD
|
*** Communication with servers (we are client) ***/ More...
Protected Member Functions | |
virtual void | Receive_SERVER_RESPONSE (Packet *p, NetworkAddress *client_addr) |
Return of server information to the client. | |
virtual void | Receive_MASTER_RESPONSE_LIST (Packet *p, NetworkAddress *client_addr) |
The server sends a list of servers. | |
virtual void | Receive_SERVER_NEWGRFS (Packet *p, NetworkAddress *client_addr) |
The return of the client's request of the names of some NewGRFs. | |
virtual void | HandleIncomingNetworkGameInfoGRFConfig (GRFConfig *config) |
Function that is called for every GRFConfig that is read when receiving a NetworkGameInfo. | |
![]() | |
NetworkRecvStatus | CloseConnection (bool error=true) |
Close the current connection; for TCP this will be mostly equivalent to Close(), but for UDP it just means the packet has to be dropped. | |
void | ReceiveInvalidPacket (PacketUDPType, NetworkAddress *client_addr) |
Helper for logging receiving invalid packets. | |
virtual void | Receive_CLIENT_FIND_SERVER (Packet *p, NetworkAddress *client_addr) |
Queries to the server for information about the game. | |
virtual void | Receive_CLIENT_DETAIL_INFO (Packet *p, NetworkAddress *client_addr) |
Query for detailed information about companies. | |
virtual void | Receive_SERVER_DETAIL_INFO (Packet *p, NetworkAddress *client_addr) |
Reply with detailed company information. | |
virtual void | Receive_SERVER_REGISTER (Packet *p, NetworkAddress *client_addr) |
Registers the server to the master server. | |
virtual void | Receive_MASTER_ACK_REGISTER (Packet *p, NetworkAddress *client_addr) |
The master server acknowledges the registration. | |
virtual void | Receive_CLIENT_GET_LIST (Packet *p, NetworkAddress *client_addr) |
The client requests a list of servers. | |
virtual void | Receive_SERVER_UNREGISTER (Packet *p, NetworkAddress *client_addr) |
A server unregisters itself at the master server. | |
virtual void | Receive_CLIENT_GET_NEWGRFS (Packet *p, NetworkAddress *client_addr) |
The client requests information about some NewGRFs. | |
virtual void | Receive_MASTER_SESSION_KEY (Packet *p, NetworkAddress *client_addr) |
The master server sends us a session key. | |
void | HandleUDPPacket (Packet *p, NetworkAddress *client_addr) |
Handle an incoming packets by sending it to the correct function. |
Additional Inherited Members | |
![]() | |
NetworkUDPSocketHandler (NetworkAddressList *bind=NULL) | |
Create an UDP socket but don't listen yet. | |
virtual | ~NetworkUDPSocketHandler () |
On destructing of this class, the socket needs to be closed. | |
bool | Listen () |
Start listening on the given host and port. | |
void | Close () |
Close the given UDP socket. | |
void | SendPacket (Packet *p, NetworkAddress *recv, bool all=false, bool broadcast=false) |
Send a packet over UDP. | |
void | ReceivePackets () |
Receive a packet at UDP level. | |
void | SendNetworkGameInfo (Packet *p, const NetworkGameInfo *info) |
Serializes the NetworkGameInfo struct to the packet. | |
void | ReceiveNetworkGameInfo (Packet *p, NetworkGameInfo *info) |
Deserializes the NetworkGameInfo struct from the packet. | |
![]() | |
NetworkAddressList | bind |
The address to bind to. | |
SocketList | sockets |
The opened sockets. |
*** Communication with servers (we are client) ***/
Helper class for handling all client side communication.
Definition at line 327 of file network_udp.cpp.
|
protectedvirtual |
Function that is called for every GRFConfig that is read when receiving a NetworkGameInfo.
Only grfid and md5sum are set, the rest is zero. This function must set all appropriate fields. This GRF is later appended to the grfconfig list of the NetworkGameInfo.
config | the GRF to handle |
Reimplemented from NetworkUDPSocketHandler.
Definition at line 470 of file network_udp.cpp.
References FGCM_EXACT, GRFConfig::filename, FindGRFConfig(), FindUnknownGRFName(), GRFConfig::flags, GCF_COPY, GCS_NOT_FOUND, GRFIdentifier::grfid, GRFConfig::ident, GRFConfig::info, GRFIdentifier::md5sum, GRFConfig::name, SetBit(), GRFConfig::status, and GRFConfig::url.
|
protectedvirtual |
The server sends a list of servers.
uint8 The protocol version. For each server: 4 or 16 bytes of IPv4 or IPv6 address. uint8 The port.
p | The received packet. |
client_addr | The origin of the packet. |
Reimplemented from NetworkUDPSocketHandler.
Definition at line 403 of file network_udp.cpp.
References NetworkSocketHandler::HasClientQuit(), NetworkUDPQueryServer(), Packet::Recv_uint16(), Packet::Recv_uint32(), Packet::Recv_uint8(), NetworkAddress::SetPort(), SLT_END, SLT_IPv4, and SLT_IPv6.
|
protectedvirtual |
Return of server information to the client.
This packet has several legacy versions, so we list the version and size of each "field":
Version: Bytes: Description: all 1 the version of this packet's structure
4+ 1 number of GRFs attached (n) 4+ n * 20 unique identifier for GRF files. Consists of:
3+ 4 current game date in days since 1-1-0 (DMY) 3+ 4 game introduction date in days since 1-1-0 (DMY)
2+ 1 maximum number of companies allowed on the server 2+ 1 number of companies on the server 2+ 1 maximum number of spectators allowed on the server
1+ var string with the name of the server 1+ var string with the revision of the server 1+ 1 the language run on the server (0 = any, 1 = English, 2 = German, 3 = French) 1+ 1 whether the server uses a password (0 = no, 1 = yes) 1+ 1 maximum number of clients allowed on the server 1+ 1 number of clients on the server 1+ 1 number of spectators on the server 1 & 2 2 current game date in days since 1-1-1920 (DMY) 1 & 2 2 game introduction date in days since 1-1-1920 (DMY) 1+ var string with the name of the map 1+ 2 width of the map in tiles 1+ 2 height of the map in tiles 1+ 1 type of map: (0 = temperate, 1 = arctic, 2 = desert, 3 = toyland) 1+ 1 whether the server is dedicated (0 = no, 1 = yes)
p | The received packet. |
client_addr | The origin of the packet. |
Reimplemented from NetworkUDPSocketHandler.
Definition at line 337 of file network_udp.cpp.
References _network_udp_server, ClearGRFConfigList(), DEBUG, GCS_NOT_FOUND, NetworkAddress::GetAddress(), NetworkAddress::GetAddressAsString(), NetworkAddress::GetHostname(), GRFConfig::GetName(), GRFConfig::info, IsNetworkCompatibleVersion(), lastof, NETWORK_MAX_GRF_COUNT, NetworkGameListAddItem(), GRFConfig::next, PACKET_UDP_CLIENT_GET_NEWGRFS, NetworkUDPSocketHandler::ReceiveNetworkGameInfo(), Packet::Send_uint8(), NetworkSocketHandler::SendGRFIdentifier(), NetworkUDPSocketHandler::SendPacket(), seprintf(), GRFConfig::status, strecat(), UNKNOWN_GRF_NAME_PLACEHOLDER, and UpdateNetworkGameWindow().