OpenTTD Source
20240919-master-gdf0233f4c2
|
Go to the documentation of this file.
10 #ifndef NETWORK_COORDINATOR_H
11 #define NETWORK_COORDINATOR_H
56 std::map<std::string, std::pair<std::string, TCPServerConnecter *>>
connecter;
58 std::map<std::string, std::map<int, std::unique_ptr<ClientNetworkStunSocketHandler>>>
stun_handlers;
59 std::map<std::string, std::unique_ptr<ClientNetworkTurnSocketHandler>>
turn_handlers;
79 static constexpr std::chrono::seconds
IDLE_TIMEOUT = std::chrono::seconds(60);
89 void ConnectFailure(
const std::string &token, uint8_t tracking_number);
91 void StunResult(
const std::string &token, uint8_t family,
bool result);
104 void StartTurnConnection(std::string &token);
void ConnectFailure(const std::string &token, uint8_t tracking_number)
Callback from a Connecter to let the Game Coordinator know the connection failed.
void ConnectSuccess(const std::string &token, SOCKET sock, NetworkAddress &address)
Callback from a Connecter to let the Game Coordinator know the connection to the game server is estab...
SOCKET sock
The socket currently connected to.
bool Receive_GC_CONNECTING(Packet &p) override
Game Coordinator informs the Client under what token it will start the attempt to connect the Server ...
void CloseStunHandler(const std::string &token, uint8_t family=AF_UNSPEC)
Close the STUN handler.
void StunResult(const std::string &token, uint8_t family, bool result)
Callback from the STUN connecter to inform the Game Coordinator about the result of the STUN.
bool Receive_GC_ERROR(Packet &p) override
Game Coordinator indicates there was an error.
void CloseAllConnections()
Close all pending connection tokens.
bool Receive_GC_LISTING(Packet &p) override
Game Coordinator replies with a list of all public servers.
void ConnectToServer(const std::string &invite_code, TCPServerConnecter *connecter)
Join a server based on an invite code.
bool Receive_GC_NEWGRF_LOOKUP(Packet &p) override
Game Coordinator informs the client of updates for the NewGRFs lookup table as used by the NewGRF des...
std::map< std::string, std::map< int, std::unique_ptr< ClientNetworkStunSocketHandler > > > stun_handlers
All pending STUN handlers, stored by token:family.
NetworkRecvStatus CloseConnection(bool error=true) override
This will put this socket handler in a close state.
uint32_t newgrf_lookup_table_cursor
Last received cursor for the #GameInfoNewGRFLookupTable updates.
void GetListing()
Request a listing of all public servers.
std::shared_ptr< TCPConnecter > game_connecter
Pending connecter to the game server.
void Register()
Register our server to receive our invite code.
Internal entity of a packet.
GameInfoNewGRFLookupTable newgrf_lookup_table
Table to look up NewGRFs in the GC_LISTING packets.
Wrapper for (un)resolved network addresses; there's no reason to transform a numeric IP to a string a...
std::map< std::string, TCPServerConnecter * > connecter_pre
Based on invite codes, the current connecters that are pending.
void SendReceive()
Check whether we received/can send some data from/to the Game Coordinator server and when that's the ...
bool Receive_GC_STUN_CONNECT(Packet &p) override
Game Coordinator informs the client/server of its STUN peer (the host:ip of the other side).
NetworkRecvStatus
Status of a network client; reasons why a client has quit.
std::chrono::steady_clock::time_point last_activity
The last time there was network activity.
Game Coordinator communication.
ClientNetworkCoordinatorSocketHandler _network_coordinator_client
The connection to the Game Coordinator.
void SendServerUpdate()
Send an update of our server status to the Game Coordinator.
bool Receive_GC_REGISTER_ACK(Packet &p) override
Game Coordinator acknowledges the registration.
std::chrono::steady_clock::time_point next_update
When to send the next update (if server and public).
bool Receive_GC_DIRECT_CONNECT(Packet &p) override
Game Coordinator requests that the Client makes a direct connection to the indicated peer,...
std::map< std::string, std::unique_ptr< ClientNetworkTurnSocketHandler > > turn_handlers
Pending TURN handler (if any), stored by token.
bool Receive_GC_CONNECT_FAILED(Packet &p) override
Game Coordinator informs the Client that it failed to find a way to connect the Client to the Server.
void CloseToken(const std::string &token)
Close everything related to this connection token.
void CloseTurnHandler(const std::string &token)
Close the TURN handler.
Base socket handler for all Game Coordinator TCP sockets.
std::map< std::string, std::pair< std::string, TCPServerConnecter * > > connecter
Based on tokens, the current (invite-code, connecter) that are pending.
bool Receive_GC_TURN_CONNECT(Packet &p) override
Game Coordinator requests that we make a connection to the indicated peer, which is a TURN server.
bool Receive_GC_STUN_REQUEST(Packet &p) override
Game Coordinator requests the client/server to do a STUN request to the STUN server.
bool connecting
Are we connecting to the Game Coordinator?
static constexpr std::chrono::seconds IDLE_TIMEOUT
The idle timeout; when to close the connection because it's idle.