mirror of https://github.com/OpenTTD/OpenTTD
Codechange: Use unique_ptr for UDP client/server sockets handlers. (#13524)
parent
e80992fc47
commit
0c0e7606d9
|
@ -38,14 +38,13 @@ static uint16_t _network_udp_broadcast; ///< Timeout for the UDP broadcasts.
|
|||
/** Some information about a socket, which exists before the actual socket has been created to provide locking and the likes. */
|
||||
struct UDPSocket {
|
||||
const std::string name; ///< The name of the socket.
|
||||
NetworkUDPSocketHandler *socket = nullptr; ///< The actual socket, which may be nullptr when not initialized yet.
|
||||
std::unique_ptr<NetworkUDPSocketHandler> socket = nullptr; ///< The actual socket, which may be nullptr when not initialized yet.
|
||||
|
||||
UDPSocket(const std::string &name) : name(name) {}
|
||||
|
||||
void CloseSocket()
|
||||
{
|
||||
this->socket->CloseSocket();
|
||||
delete this->socket;
|
||||
this->socket = nullptr;
|
||||
}
|
||||
|
||||
|
@ -99,13 +98,13 @@ void ClientNetworkUDPSocketHandler::Receive_SERVER_RESPONSE(Packet &, NetworkAdd
|
|||
}
|
||||
|
||||
/** Broadcast to all ips */
|
||||
static void NetworkUDPBroadCast(NetworkUDPSocketHandler *socket)
|
||||
static void NetworkUDPBroadCast(NetworkUDPSocketHandler &socket)
|
||||
{
|
||||
for (NetworkAddress &addr : _broadcast_list) {
|
||||
Debug(net, 5, "Broadcasting to {}", addr.GetHostname());
|
||||
|
||||
Packet p(socket, PACKET_UDP_CLIENT_FIND_SERVER);
|
||||
socket->SendPacket(p, addr, true, true);
|
||||
Packet p(&socket, PACKET_UDP_CLIENT_FIND_SERVER);
|
||||
socket.SendPacket(p, addr, true, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -117,7 +116,7 @@ void NetworkUDPSearchGame()
|
|||
|
||||
Debug(net, 3, "Searching server");
|
||||
|
||||
NetworkUDPBroadCast(_udp_client.socket);
|
||||
NetworkUDPBroadCast(*_udp_client.socket);
|
||||
_network_udp_broadcast = 300; // Stay searching for 300 ticks
|
||||
}
|
||||
|
||||
|
@ -130,11 +129,11 @@ void NetworkUDPInitialize()
|
|||
Debug(net, 3, "Initializing UDP listeners");
|
||||
assert(_udp_client.socket == nullptr && _udp_server.socket == nullptr);
|
||||
|
||||
_udp_client.socket = new ClientNetworkUDPSocketHandler();
|
||||
_udp_client.socket = std::make_unique<ClientNetworkUDPSocketHandler>();
|
||||
|
||||
NetworkAddressList server;
|
||||
GetBindAddresses(&server, _settings_client.network.server_port);
|
||||
_udp_server.socket = new ServerNetworkUDPSocketHandler(&server);
|
||||
_udp_server.socket = std::make_unique<ServerNetworkUDPSocketHandler>(&server);
|
||||
|
||||
_network_udp_server = false;
|
||||
_network_udp_broadcast = 0;
|
||||
|
|
Loading…
Reference in New Issue