1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-24 00:03:11 +01:00

Close #12425: Refactor SOCKET_STATUS to use strong enum (#13064)

This commit is contained in:
Julia Pinheiro
2020-10-01 22:10:51 -03:00
committed by GitHub
parent 657106d4c6
commit c36ec5c5ce
6 changed files with 51 additions and 51 deletions

View File

@@ -234,7 +234,7 @@ void NetworkBase::CloseConnection()
mode = NETWORK_MODE_NONE;
status = NETWORK_STATUS_NONE;
_lastConnectStatus = SOCKET_STATUS_CLOSED;
_lastConnectStatus = SocketStatus::Closed;
}
bool NetworkBase::BeginClient(const std::string& host, uint16_t port)
@@ -260,7 +260,7 @@ bool NetworkBase::BeginClient(const std::string& host, uint16_t port)
_serverState.gamestateSnapshotsEnabled = false;
status = NETWORK_STATUS_CONNECTING;
_lastConnectStatus = SOCKET_STATUS_CLOSED;
_lastConnectStatus = SocketStatus::Closed;
_clientMapLoaded = false;
_serverTickData.clear();
@@ -543,11 +543,11 @@ void NetworkBase::UpdateClient()
{
switch (_serverConnection->Socket->GetStatus())
{
case SOCKET_STATUS_RESOLVING:
case SocketStatus::Resolving:
{
if (_lastConnectStatus != SOCKET_STATUS_RESOLVING)
if (_lastConnectStatus != SocketStatus::Resolving)
{
_lastConnectStatus = SOCKET_STATUS_RESOLVING;
_lastConnectStatus = SocketStatus::Resolving;
char str_resolving[256];
format_string(str_resolving, 256, STR_MULTIPLAYER_RESOLVING, nullptr);
@@ -558,11 +558,11 @@ void NetworkBase::UpdateClient()
}
break;
}
case SOCKET_STATUS_CONNECTING:
case SocketStatus::Connecting:
{
if (_lastConnectStatus != SOCKET_STATUS_CONNECTING)
if (_lastConnectStatus != SocketStatus::Connecting)
{
_lastConnectStatus = SOCKET_STATUS_CONNECTING;
_lastConnectStatus = SocketStatus::Connecting;
char str_connecting[256];
format_string(str_connecting, 256, STR_MULTIPLAYER_CONNECTING, nullptr);
@@ -575,7 +575,7 @@ void NetworkBase::UpdateClient()
}
break;
}
case SOCKET_STATUS_CONNECTED:
case SocketStatus::Connected:
{
status = NETWORK_STATUS_CONNECTED;
_serverConnection->ResetLastPacketTime();

View File

@@ -228,7 +228,7 @@ private: // Client Data
int32_t status = NETWORK_STATUS_NONE;
uint8_t player_id = 0;
uint16_t _port = 0;
SOCKET_STATUS _lastConnectStatus = SOCKET_STATUS_CLOSED;
SocketStatus _lastConnectStatus = SocketStatus::Closed;
bool _requireReconnect = false;
bool _clientMapLoaded = false;
};

View File

@@ -103,7 +103,7 @@ private:
auto ticks = Platform::GetTicks();
if (ticks > _lastListenTime + 500)
{
if (_lanListener->GetStatus() != SOCKET_STATUS_LISTENING)
if (_lanListener->GetStatus() != SocketStatus::Listening)
{
_lanListener->Listen(NETWORK_LAN_BROADCAST_PORT);
}

View File

@@ -250,7 +250,7 @@ private:
class TcpSocket final : public ITcpSocket, protected Socket
{
private:
std::atomic<SOCKET_STATUS> _status = ATOMIC_VAR_INIT(SOCKET_STATUS_CLOSED);
std::atomic<SocketStatus> _status = ATOMIC_VAR_INIT(SocketStatus::Closed);
uint16_t _listeningPort = 0;
SOCKET _socket = INVALID_SOCKET;
@@ -271,7 +271,7 @@ public:
CloseSocket();
}
SOCKET_STATUS GetStatus() const override
SocketStatus GetStatus() const override
{
return _status;
}
@@ -296,7 +296,7 @@ public:
void Listen(const std::string& address, uint16_t port) override
{
if (_status != SOCKET_STATUS_CLOSED)
if (_status != SocketStatus::Closed)
{
throw std::runtime_error("Socket not closed.");
}
@@ -352,12 +352,12 @@ public:
}
_listeningPort = port;
_status = SOCKET_STATUS_LISTENING;
_status = SocketStatus::Listening;
}
std::unique_ptr<ITcpSocket> Accept() override
{
if (_status != SOCKET_STATUS_LISTENING)
if (_status != SocketStatus::Listening)
{
throw std::runtime_error("Socket not listening.");
}
@@ -407,7 +407,7 @@ public:
void Connect(const std::string& address, uint16_t port) override
{
if (_status != SOCKET_STATUS_CLOSED && _status != SOCKET_STATUS_WAITING)
if (_status != SocketStatus::Closed && _status != SocketStatus::Waiting)
{
throw std::runtime_error("Socket not closed.");
}
@@ -415,7 +415,7 @@ public:
try
{
// Resolve address
_status = SOCKET_STATUS_RESOLVING;
_status = SocketStatus::Resolving;
sockaddr_storage ss{};
socklen_t ss_len;
@@ -424,7 +424,7 @@ public:
throw SocketException("Unable to resolve address.");
}
_status = SOCKET_STATUS_CONNECTING;
_status = SocketStatus::Connecting;
_socket = socket(ss.ss_family, SOCK_STREAM, IPPROTO_TCP);
if (_socket == INVALID_SOCKET)
{
@@ -481,7 +481,7 @@ public:
}
if (error == 0)
{
_status = SOCKET_STATUS_CONNECTED;
_status = SocketStatus::Connected;
return;
}
}
@@ -499,7 +499,7 @@ public:
void ConnectAsync(const std::string& address, uint16_t port) override
{
if (_status != SOCKET_STATUS_CLOSED)
if (_status != SocketStatus::Closed)
{
throw std::runtime_error("Socket not closed.");
}
@@ -507,7 +507,7 @@ public:
// When connect is called, the status is set to resolving, but we want to make sure
// the status is changed before this async method exits. Otherwise, the consumer
// might think the status has closed before it started to connect.
_status = SOCKET_STATUS_WAITING;
_status = SocketStatus::Waiting;
auto saddress = std::string(address);
std::promise<void> barrier;
@@ -530,7 +530,7 @@ public:
void Finish() override
{
if (_status == SOCKET_STATUS_CONNECTED)
if (_status == SocketStatus::Connected)
{
shutdown(_socket, SHUT_WR);
}
@@ -538,7 +538,7 @@ public:
void Disconnect() override
{
if (_status == SOCKET_STATUS_CONNECTED)
if (_status == SocketStatus::Connected)
{
shutdown(_socket, SHUT_RDWR);
}
@@ -546,7 +546,7 @@ public:
size_t SendData(const void* buffer, size_t size) override
{
if (_status != SOCKET_STATUS_CONNECTED)
if (_status != SocketStatus::Connected)
{
throw std::runtime_error("Socket not connected.");
}
@@ -568,7 +568,7 @@ public:
NetworkReadPacket ReceiveData(void* buffer, size_t size, size_t* sizeReceived) override
{
if (_status != SOCKET_STATUS_CONNECTED)
if (_status != SocketStatus::Connected)
{
throw std::runtime_error("Socket not connected.");
}
@@ -635,7 +635,7 @@ private:
_socket = socket;
_hostName = hostName;
_ipAddress = ipAddress;
_status = SOCKET_STATUS_CONNECTED;
_status = SocketStatus::Connected;
}
void CloseSocket()
@@ -645,7 +645,7 @@ private:
closesocket(_socket);
_socket = INVALID_SOCKET;
}
_status = SOCKET_STATUS_CLOSED;
_status = SocketStatus::Closed;
}
std::string GetIpAddressFromSocket(const sockaddr_in* addr)
@@ -678,7 +678,7 @@ private:
class UdpSocket final : public IUdpSocket, protected Socket
{
private:
SOCKET_STATUS _status = SOCKET_STATUS_CLOSED;
SocketStatus _status = SocketStatus::Closed;
uint16_t _listeningPort = 0;
SOCKET _socket = INVALID_SOCKET;
NetworkEndpoint _endpoint;
@@ -694,7 +694,7 @@ public:
CloseSocket();
}
SOCKET_STATUS GetStatus() const override
SocketStatus GetStatus() const override
{
return _status;
}
@@ -711,7 +711,7 @@ public:
void Listen(const std::string& address, uint16_t port) override
{
if (_status != SOCKET_STATUS_CLOSED)
if (_status != SocketStatus::Closed)
{
throw std::runtime_error("Socket not closed.");
}
@@ -740,7 +740,7 @@ public:
}
_listeningPort = port;
_status = SOCKET_STATUS_LISTENING;
_status = SocketStatus::Listening;
}
size_t SendData(const std::string& address, uint16_t port, const void* buffer, size_t size) override
@@ -770,7 +770,7 @@ public:
auto ss = &dest->GetAddress();
auto ss_len = dest->GetAddressLen();
if (_status != SOCKET_STATUS_LISTENING)
if (_status != SocketStatus::Listening)
{
_endpoint = *dest;
}
@@ -797,7 +797,7 @@ public:
{
sockaddr_in senderAddr{};
socklen_t senderAddrLen = sizeof(sockaddr_in);
if (_status != SOCKET_STATUS_LISTENING)
if (_status != SocketStatus::Listening)
{
senderAddrLen = _endpoint.GetAddressLen();
std::memcpy(&senderAddr, &_endpoint.GetAddress(), senderAddrLen);
@@ -836,7 +836,7 @@ private:
{
_socket = socket;
_hostName = hostName;
_status = SOCKET_STATUS_CONNECTED;
_status = SocketStatus::Connected;
}
SOCKET CreateSocket()
@@ -879,7 +879,7 @@ private:
closesocket(_socket);
_socket = INVALID_SOCKET;
}
_status = SOCKET_STATUS_CLOSED;
_status = SocketStatus::Closed;
}
};

View File

@@ -15,14 +15,14 @@
#include <string>
#include <vector>
enum SOCKET_STATUS
enum class SocketStatus
{
SOCKET_STATUS_CLOSED,
SOCKET_STATUS_WAITING,
SOCKET_STATUS_RESOLVING,
SOCKET_STATUS_CONNECTING,
SOCKET_STATUS_CONNECTED,
SOCKET_STATUS_LISTENING,
Closed,
Waiting,
Resolving,
Connecting,
Connected,
Listening,
};
enum class NetworkReadPacket : int32_t
@@ -53,7 +53,7 @@ struct ITcpSocket
public:
virtual ~ITcpSocket() = default;
virtual SOCKET_STATUS GetStatus() const abstract;
virtual SocketStatus GetStatus() const abstract;
virtual const char* GetError() const abstract;
virtual const char* GetHostName() const abstract;
virtual std::string GetIpAddress() const abstract;
@@ -83,7 +83,7 @@ struct IUdpSocket
public:
virtual ~IUdpSocket() = default;
virtual SOCKET_STATUS GetStatus() const abstract;
virtual SocketStatus GetStatus() const abstract;
virtual const char* GetError() const abstract;
virtual const char* GetHostName() const abstract;

View File

@@ -302,14 +302,14 @@ namespace OpenRCT2::Scripting
auto status = _socket->GetStatus();
if (_connecting)
{
if (status == SOCKET_STATUS_CONNECTED)
if (status == SocketStatus::Connected)
{
_connecting = false;
_wasConnected = true;
_eventList.Raise(EVENT_CONNECT_ONCE, GetPlugin(), {}, false);
_eventList.RemoveAllListeners(EVENT_CONNECT_ONCE);
}
else if (status == SOCKET_STATUS_CLOSED)
else if (status == SocketStatus::Closed)
{
_connecting = false;
@@ -324,7 +324,7 @@ namespace OpenRCT2::Scripting
_eventList.Raise(EVENT_ERROR, GetPlugin(), { dukErr }, true);
}
}
else if (status == SOCKET_STATUS_CONNECTED)
else if (status == SocketStatus::Connected)
{
char buffer[2048];
size_t bytesRead{};
@@ -388,7 +388,7 @@ namespace OpenRCT2::Scripting
{
if (_socket != nullptr)
{
return _socket->GetStatus() == SOCKET_STATUS_LISTENING;
return _socket->GetStatus() == SocketStatus::Listening;
}
return false;
}
@@ -413,7 +413,7 @@ namespace OpenRCT2::Scripting
_socket = CreateTcpSocket();
}
if (_socket->GetStatus() == SOCKET_STATUS_LISTENING)
if (_socket->GetStatus() == SocketStatus::Listening)
{
duk_error(ctx, DUK_ERR_ERROR, "Server is already listening.");
}
@@ -488,7 +488,7 @@ namespace OpenRCT2::Scripting
if (_socket == nullptr)
return;
if (_socket->GetStatus() == SOCKET_STATUS_LISTENING)
if (_socket->GetStatus() == SocketStatus::Listening)
{
auto client = _socket->Accept();
if (client != nullptr)