|
OpenTTD Source
1.10.0-RC1
|
This file handles the UDP related communication. More...
#include "../stdafx.h"#include "../date_func.h"#include "../map_func.h"#include "../debug.h"#include "network_gamelist.h"#include "network_internal.h"#include "network_udp.h"#include "network.h"#include "../core/endian_func.hpp"#include "../company_base.h"#include "../thread.h"#include "../rev.h"#include "../newgrf_text.h"#include "../strings_func.h"#include "table/strings.h"#include <mutex>#include "core/udp.h"#include "../safeguards.h"Go to the source code of this file.
Data Structures | |
| class | MasterNetworkUDPSocketHandler |
| *** Communication with the masterserver ***/ More... | |
| class | ServerNetworkUDPSocketHandler |
| *** Communication with clients (we are server) ***/ More... | |
| class | ClientNetworkUDPSocketHandler |
| *** Communication with servers (we are client) ***/ More... | |
Functions | |
| static void | DoNetworkUDPQueryServer (NetworkAddress &address, bool needs_mutex, bool manually) |
| Helper function doing the actual work for querying the server. More... | |
| void | NetworkUDPQueryServer (NetworkAddress address, bool manually) |
| Query a specific server. More... | |
| static void | NetworkUDPBroadCast (NetworkUDPSocketHandler *socket) |
| Broadcast to all ips. | |
| void | NetworkUDPQueryMasterServer () |
| Request the the server-list from the master server. | |
| void | NetworkUDPSearchGame () |
| Find all servers. | |
| static void | NetworkUDPRemoveAdvertiseThread () |
| Thread entry point for de-advertising. | |
| void | NetworkUDPRemoveAdvertise (bool blocking) |
| Remove our advertise from the master-server. More... | |
| static void | NetworkUDPAdvertiseThread () |
| Thread entry point for advertising. | |
| void | NetworkUDPAdvertise () |
| Register us to the master server This function checks if it needs to send an advertise. More... | |
| void | NetworkUDPInitialize () |
| Initialize the whole UDP bit. More... | |
| void | NetworkUDPClose () |
| Close all UDP related stuff. More... | |
| void | NetworkBackgroundUDPLoop () |
| Receive the UDP packets. More... | |
Variables | |
| static std::mutex | _network_udp_mutex |
| Mutex for all out threaded udp resolution and such. More... | |
| static uint64 | _session_key = 0 |
| Session key to register ourselves to the master server. | |
| static const uint32 | ADVERTISE_NORMAL_INTERVAL = 15 * 60 * 1000 |
| interval between advertising in ms (15 minutes) | |
| static const uint32 | ADVERTISE_RETRY_INTERVAL = 10 * 1000 |
| re-advertise when no response after this many ms (10 seconds) | |
| static const uint32 | ADVERTISE_RETRY_TIMES = 3 |
| give up re-advertising after this much failed retries | |
| NetworkUDPSocketHandler * | _udp_client_socket = nullptr |
| udp client socket | |
| NetworkUDPSocketHandler * | _udp_server_socket = nullptr |
| udp server socket | |
| NetworkUDPSocketHandler * | _udp_master_socket = nullptr |
| udp master socket | |
This file handles the UDP related communication.
This is the GameServer <-> MasterServer and GameServer <-> GameClient communication before the game is being joined.
Definition in file network_udp.cpp.
|
static |
Helper function doing the actual work for querying the server.
| address | The address of the server. |
| needs_mutex | Whether we need to acquire locks when sending the packet or not. |
| manually | Whether the address was entered manually. |
Definition at line 56 of file network_udp.cpp.
References _network_udp_mutex, NetworkGameList::address, NetworkAddress::GetAddressAsString(), NetworkAddress::GetHostname(), NetworkGameInfo::hostname, NetworkGameList::info, lastof, lock, NetworkGameList::manually, NetworkGameListAddItemDelayed(), PACKET_UDP_CLIENT_FIND_SERVER, NetworkUDPSocketHandler::SendPacket(), NetworkGameInfo::server_name, and strecpy().
Referenced by NetworkUDPQueryServer().
| void NetworkBackgroundUDPLoop | ( | ) |
Receive the UDP packets.
Definition at line 663 of file network_udp.cpp.
References _network_udp_broadcast, _network_udp_mutex, _network_udp_server, lock, and NetworkUDPSocketHandler::ReceivePackets().
Referenced by NetworkBackgroundLoop().
| void NetworkUDPAdvertise | ( | ) |
Register us to the master server This function checks if it needs to send an advertise.
< The time of the last advertisement (used to check for wrapping of time)
< The next time we should perform a normal advertisement.
< The next time we should perform a retry of an advertisement.
Definition at line 579 of file network_udp.cpp.
References _network_advertise_retries, _network_need_advertise, _network_server, _network_udp_server, _networking, _realtime_tick, _settings_client, ADVERTISE_NORMAL_INTERVAL, ADVERTISE_RETRY_INTERVAL, ADVERTISE_RETRY_TIMES, ClientSettings::network, and NetworkSettings::server_advertise.
| void NetworkUDPClose | ( | ) |
Close all UDP related stuff.
Definition at line 644 of file network_udp.cpp.
References _network_udp_broadcast, _network_udp_mutex, _network_udp_server, _udp_client_socket, _udp_master_socket, _udp_server_socket, NetworkUDPSocketHandler::Close(), DEBUG, and lock.
Referenced by NetworkShutDown(), and NetworkUDPInitialize().
| void NetworkUDPInitialize | ( | ) |
Initialize the whole UDP bit.
Definition at line 619 of file network_udp.cpp.
References DEBUG, and NetworkUDPClose().
Referenced by NetworkDisconnect().
| void NetworkUDPQueryServer | ( | NetworkAddress | address, |
| bool | manually | ||
| ) |
Query a specific server.
| address | The address of the server. |
| manually | Whether the address was entered manually. |
Definition at line 78 of file network_udp.cpp.
References DoNetworkUDPQueryServer(), NetworkAddress::IsResolved(), and StartNewThread().
Referenced by NetworkGameListRequery().
| void NetworkUDPRemoveAdvertise | ( | bool | blocking | ) |
Remove our advertise from the master-server.
| blocking | whether to wait until the removal has finished. |
Definition at line 527 of file network_udp.cpp.
References _network_server, _network_udp_server, _networking, NetworkUDPRemoveAdvertiseThread(), and StartNewThread().
Referenced by NetworkDisconnect(), and MasterNetworkUDPSocketHandler::Receive_MASTER_ACK_REGISTER().
|
static |
Mutex for all out threaded udp resolution and such.
Definition at line 37 of file network_udp.cpp.
Referenced by DoNetworkUDPQueryServer(), NetworkBackgroundUDPLoop(), NetworkUDPAdvertiseThread(), NetworkUDPClose(), and NetworkUDPRemoveAdvertiseThread().