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

View File

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

View File

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

View File

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

View File

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

View File

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