|
OpenTTD Source 20260421-master-gc2fbc6fdeb
|
Class for handling the client side of the TURN connection. More...
#include <network_turn.h>
Public Member Functions | |
| ClientNetworkTurnSocketHandler (std::string_view token, uint8_t tracking_number, std::string_view connection_string) | |
| Create this handler. | |
| NetworkRecvStatus | CloseConnection (bool error=true) override |
| This will put this socket handler in a close state. | |
| ~ClientNetworkTurnSocketHandler () override | |
| Stop the attempt to connect. | |
| void | SendReceive () |
| Check whether we received/can send some data from/to the TURN server and when that's the case handle it appropriately. | |
| void | Connect () |
| Connect to the TURN server. | |
| void | ConnectFailure () |
| Callback when we were unable to connect. | |
| Public Member Functions inherited from NetworkTurnSocketHandler | |
| NetworkTurnSocketHandler (SOCKET s=INVALID_SOCKET) | |
| Create a new cs socket handler for a given cs. | |
| bool | ReceivePackets () |
| Receive a packet at TCP level. | |
| Public Member Functions inherited from NetworkTCPSocketHandler | |
| bool | IsConnected () const |
| Whether this socket is currently bound to a socket. | |
| void | CloseSocket () |
| Close the actual socket of the connection. | |
| virtual void | SendPacket (std::unique_ptr< Packet > &&packet) |
| This function puts the packet in the send-queue and it is send as soon as possible. | |
| SendPacketsState | SendPackets (bool closing_down=false) |
| Sends all the buffered packets out for this client. | |
| virtual std::unique_ptr< Packet > | ReceivePacket () |
| Receives a packet for the given client. | |
| bool | CanSendReceive () |
| Check whether this socket can send or receive something. | |
| bool | HasSendQueue () |
| Whether there is something pending in the send queue. | |
| NetworkTCPSocketHandler (SOCKET s=INVALID_SOCKET) | |
| Construct a socket handler for a TCP connection. | |
| ~NetworkTCPSocketHandler () override | |
| Close the socket. | |
| Public Member Functions inherited from NetworkSocketHandler | |
| NetworkSocketHandler ()=default | |
| Create a new unbound socket. | |
| virtual | ~NetworkSocketHandler ()=default |
| Ensure the destructor of the sub classes are called as well. | |
| void | MarkClosed () |
| Mark the connection as closed. | |
| bool | HasClientQuit () const |
| Whether the current client connected to the socket has quit. | |
| void | Reopen () |
| Reopen the socket so we can send/receive stuff again. | |
Static Public Member Functions | |
| static std::unique_ptr< ClientNetworkTurnSocketHandler > | Turn (std::string_view token, uint8_t tracking_number, std::string_view ticket, std::string_view connection_string) |
| Prepare a TURN connection. | |
Data Fields | |
| std::shared_ptr< TCPConnecter > | connecter {} |
| Connecter instance. | |
| bool | connect_started = false |
| Whether we started the connection. | |
| Data Fields inherited from NetworkTCPSocketHandler | |
| SOCKET | sock = INVALID_SOCKET |
| The socket currently connected to. | |
| bool | writable = false |
| Can we write to this socket? | |
Protected Member Functions | |
| bool | ReceiveServerError (Packet &p) override |
| TURN server was unable to connect the client or server based on the token. | |
| bool | ReceiveServerConnected (Packet &p) override |
| TURN server has connected client and OpenTTD server together and will now relay all packets to each other. | |
| Protected Member Functions inherited from NetworkTurnSocketHandler | |
| bool | ReceiveInvalidPacket (PacketTurnType type) |
| Helper for logging receiving invalid packets. | |
| virtual bool | ReceiveClientConnect (Packet &p) |
| Client (or OpenTTD server) wants to connect to the TURN server (on request by the Game Coordinator). | |
| bool | HandlePacket (Packet &p) |
| Handle the given packet, i.e. | |
Private Attributes | |
| std::string | token |
| Token of this connection. | |
| uint8_t | tracking_number |
| Tracking number of this connection. | |
| std::string | connection_string |
| The connection string of the TURN server we are connecting to. | |
Additional Inherited Members | |
| Protected Attributes inherited from NetworkSocketHandler | |
| std::unique_ptr< class NetworkEncryptionHandler > | receive_encryption_handler = nullptr |
| The handler for decrypting received packets. | |
| std::unique_ptr< class NetworkEncryptionHandler > | send_encryption_handler = nullptr |
| The handler for encrypting sent packets. | |
Class for handling the client side of the TURN connection.
Definition at line 16 of file network_turn.h.
|
inline |
Create this handler.
| token | The unique token of the connection. |
| tracking_number | Tracking number for the connection, from the TURN server. |
| connection_string | The address to connect to. |
Definition at line 36 of file network_turn.h.
References connection_string, token, and tracking_number.
|
override |
|
overridevirtual |
This will put this socket handler in a close state.
It will not actually close the OS socket; use CloseSocket for this.
| error | Whether we quit under an error condition or not. |
Reimplemented from NetworkTCPSocketHandler.
Definition at line 116 of file network_turn.cpp.
References NetworkTCPSocketHandler::CloseConnection(), connecter, and NETWORK_RECV_STATUS_OKAY.
| void ClientNetworkTurnSocketHandler::Connect | ( | ) |
Connect to the TURN server.
Definition at line 78 of file network_turn.cpp.
References connect_started, connecter, connection_string, TCPConnecter::Create(), and Debug.
| void ClientNetworkTurnSocketHandler::ConnectFailure | ( | ) |
Callback when we were unable to connect.
Definition at line 111 of file network_turn.cpp.
References _network_coordinator_client, token, and tracking_number.
Referenced by NetworkTurnConnecter::OnFailure(), and ReceiveServerError().
|
overrideprotectedvirtual |
TURN server has connected client and OpenTTD server together and will now relay all packets to each other.
No further TURN packets should be send over this socket, and the socket should be handed over to the game protocol.
string Hostname of the peer. This can be used to check if a client is not banned etc.
| p | The packet that was just received. |
Reimplemented from NetworkTurnSocketHandler.
Definition at line 59 of file network_turn.cpp.
References _network_coordinator_client, Debug, NETWORK_DEFAULT_PORT, NETWORK_HOSTNAME_LENGTH, Packet::Recv_string(), NetworkTCPSocketHandler::sock, and token.
|
overrideprotectedvirtual |
TURN server was unable to connect the client or server based on the token.
Most likely cause is an invalid token or the other side that hasn't connected in a reasonable amount of time.
| p | The packet that was just received. |
Reimplemented from NetworkTurnSocketHandler.
Definition at line 50 of file network_turn.cpp.
References ConnectFailure(), and Debug.
| void ClientNetworkTurnSocketHandler::SendReceive | ( | ) |
Check whether we received/can send some data from/to the TURN server and when that's the case handle it appropriately.
Definition at line 142 of file network_turn.cpp.
References NetworkTCPSocketHandler::CanSendReceive(), NetworkTurnSocketHandler::ReceivePackets(), NetworkTCPSocketHandler::SendPackets(), and NetworkTCPSocketHandler::sock.
|
static |
Prepare a TURN connection.
Not until you run Connect() on the resulting instance will it start setting up the TURN connection.
| token | The token as received from the Game Coordinator. |
| tracking_number | The tracking number as received from the Game Coordinator. |
| ticket | The ticket as received from the Game Coordinator. |
| connection_string | Connection string of the TURN server. |
Definition at line 96 of file network_turn.cpp.
References ClientConnect, connection_string, Debug, NETWORK_COORDINATOR_VERSION, token, and tracking_number.
Referenced by ClientNetworkCoordinatorSocketHandler::ReceiveGameCoordinatorTurnConnect().
| bool ClientNetworkTurnSocketHandler::connect_started = false |
Whether we started the connection.
Definition at line 28 of file network_turn.h.
Referenced by Connect().
| std::shared_ptr<TCPConnecter> ClientNetworkTurnSocketHandler::connecter {} |
Connecter instance.
Definition at line 27 of file network_turn.h.
Referenced by CloseConnection(), Connect(), NetworkTurnConnecter::OnConnect(), NetworkTurnConnecter::OnFailure(), and ~ClientNetworkTurnSocketHandler().
|
private |
The connection string of the TURN server we are connecting to.
Definition at line 20 of file network_turn.h.
Referenced by ClientNetworkTurnSocketHandler(), Connect(), and Turn().
|
private |
Token of this connection.
Definition at line 18 of file network_turn.h.
Referenced by ClientNetworkTurnSocketHandler(), ConnectFailure(), ReceiveServerConnected(), and Turn().
|
private |
Tracking number of this connection.
Definition at line 19 of file network_turn.h.
Referenced by ClientNetworkTurnSocketHandler(), ConnectFailure(), and Turn().