From 20211758090207ed3b0d1d59f388d58fb8c74485 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 19 Jan 2021 14:00:01 -0500 Subject: TraversalClient: Convert state enum into an enum class Prevents implicit conversions and prevents identifiers from polluting the class scope. --- Source/Core/Common/TraversalClient.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'Source/Core/Common/TraversalClient.cpp') diff --git a/Source/Core/Common/TraversalClient.cpp b/Source/Core/Common/TraversalClient.cpp index 071bccbc1c..12b78b8641 100644 --- a/Source/Core/Common/TraversalClient.cpp +++ b/Source/Core/Common/TraversalClient.cpp @@ -48,7 +48,7 @@ void TraversalClient::ReconnectToServer() } m_ServerAddress.port = m_port; - m_State = Connecting; + m_State = State::Connecting; TraversalPacket hello = {}; hello.type = TraversalPacketHelloFromClient; @@ -145,7 +145,7 @@ void TraversalClient::HandleServerPacket(TraversalPacket* packet) } break; case TraversalPacketHelloFromServer: - if (m_State != Connecting) + if (!IsConnecting()) break; if (!packet->helloFromServer.ok) { @@ -153,7 +153,7 @@ void TraversalClient::HandleServerPacket(TraversalPacket* packet) break; } m_HostId = packet->helloFromServer.yourHostId; - m_State = Connected; + m_State = State::Connected; if (m_Client) m_Client->OnTraversalStateChanged(); break; @@ -214,7 +214,7 @@ void TraversalClient::HandleServerPacket(TraversalPacket* packet) void TraversalClient::OnFailure(FailureReason reason) { - m_State = Failure; + m_State = State::Failure; m_FailureReason = reason; if (m_Client) @@ -257,7 +257,7 @@ void TraversalClient::HandleResends() void TraversalClient::HandlePing() { const u32 now = enet_time_get(); - if (m_State == Connected && now - m_PingTime >= 500) + if (IsConnected() && now - m_PingTime >= 500) { TraversalPacket ping = {}; ping.type = TraversalPacketPing; -- cgit v1.2.3 From d2ea94195cde9f8453f5b9448b41648973859277 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 19 Jan 2021 14:11:39 -0500 Subject: TraversalProto: Convert TraversalPacketType into an enum class Makes for strong typing and prevents namespace pollution. --- Source/Core/Common/TraversalClient.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'Source/Core/Common/TraversalClient.cpp') diff --git a/Source/Core/Common/TraversalClient.cpp b/Source/Core/Common/TraversalClient.cpp index 12b78b8641..4bcde96f6e 100644 --- a/Source/Core/Common/TraversalClient.cpp +++ b/Source/Core/Common/TraversalClient.cpp @@ -51,7 +51,7 @@ void TraversalClient::ReconnectToServer() m_State = State::Connecting; TraversalPacket hello = {}; - hello.type = TraversalPacketHelloFromClient; + hello.type = TraversalPacketType::HelloFromClient; hello.helloFromClient.protoVersion = TraversalProtoVersion; SendTraversalPacket(hello); if (m_Client) @@ -81,7 +81,7 @@ void TraversalClient::ConnectToClient(const std::string& host) return; } TraversalPacket packet = {}; - packet.type = TraversalPacketConnectPlease; + packet.type = TraversalPacketType::ConnectPlease; memcpy(packet.connectPlease.hostId.data(), host.c_str(), host.size()); m_ConnectRequestId = SendTraversalPacket(packet); m_PendingConnect = true; @@ -129,7 +129,7 @@ void TraversalClient::HandleServerPacket(TraversalPacket* packet) u8 ok = 1; switch (packet->type) { - case TraversalPacketAck: + case TraversalPacketType::Ack: if (!packet->ack.ok) { OnFailure(FailureReason::ServerForgotAboutUs); @@ -144,7 +144,7 @@ void TraversalClient::HandleServerPacket(TraversalPacket* packet) } } break; - case TraversalPacketHelloFromServer: + case TraversalPacketType::HelloFromServer: if (!IsConnecting()) break; if (!packet->helloFromServer.ok) @@ -157,7 +157,7 @@ void TraversalClient::HandleServerPacket(TraversalPacket* packet) if (m_Client) m_Client->OnTraversalStateChanged(); break; - case TraversalPacketPleaseSendPacket: + case TraversalPacketType::PleaseSendPacket: { // security is overrated. ENetAddress addr = MakeENetAddress(&packet->pleaseSendPacket.address); @@ -176,8 +176,8 @@ void TraversalClient::HandleServerPacket(TraversalPacket* packet) } break; } - case TraversalPacketConnectReady: - case TraversalPacketConnectFailed: + case TraversalPacketType::ConnectReady: + case TraversalPacketType::ConnectFailed: { if (!m_PendingConnect || packet->connectReady.requestId != m_ConnectRequestId) break; @@ -187,7 +187,7 @@ void TraversalClient::HandleServerPacket(TraversalPacket* packet) if (!m_Client) break; - if (packet->type == TraversalPacketConnectReady) + if (packet->type == TraversalPacketType::ConnectReady) m_Client->OnConnectReady(MakeENetAddress(&packet->connectReady.address)); else m_Client->OnConnectFailed(packet->connectFailed.reason); @@ -197,10 +197,10 @@ void TraversalClient::HandleServerPacket(TraversalPacket* packet) WARN_LOG_FMT(NETPLAY, "Received unknown packet with type {}", packet->type); break; } - if (packet->type != TraversalPacketAck) + if (packet->type != TraversalPacketType::Ack) { TraversalPacket ack = {}; - ack.type = TraversalPacketAck; + ack.type = TraversalPacketType::Ack; ack.requestId = packet->requestId; ack.ack.ok = ok; @@ -260,7 +260,7 @@ void TraversalClient::HandlePing() if (IsConnected() && now - m_PingTime >= 500) { TraversalPacket ping = {}; - ping.type = TraversalPacketPing; + ping.type = TraversalPacketType::Ping; ping.ping.hostId = m_HostId; SendTraversalPacket(ping); m_PingTime = now; -- cgit v1.2.3 From cb4ca7837a5a1bd97627b73962823ad6f207fadc Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 19 Jan 2021 14:21:04 -0500 Subject: TraversalClient: Prevent uninitialized values from occurring in MakeENetAddress Previously, eaddr would only be partially initialized in the ipv6 case. Even if there's no support for it, we may as well ensure that the variable always has deterministic initialization. While we're at it, we can make the parameter a const reference, given no members are modified. --- Source/Core/Common/TraversalClient.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'Source/Core/Common/TraversalClient.cpp') diff --git a/Source/Core/Common/TraversalClient.cpp b/Source/Core/Common/TraversalClient.cpp index 4bcde96f6e..19014932a4 100644 --- a/Source/Core/Common/TraversalClient.cpp +++ b/Source/Core/Common/TraversalClient.cpp @@ -58,17 +58,17 @@ void TraversalClient::ReconnectToServer() m_Client->OnTraversalStateChanged(); } -static ENetAddress MakeENetAddress(TraversalInetAddress* address) +static ENetAddress MakeENetAddress(const TraversalInetAddress& address) { - ENetAddress eaddr; - if (address->isIPV6) + ENetAddress eaddr{}; + if (address.isIPV6) { eaddr.port = 0; // no support yet :( } else { - eaddr.host = address->address[0]; - eaddr.port = ntohs(address->port); + eaddr.host = address.address[0]; + eaddr.port = ntohs(address.port); } return eaddr; } @@ -160,7 +160,7 @@ void TraversalClient::HandleServerPacket(TraversalPacket* packet) case TraversalPacketType::PleaseSendPacket: { // security is overrated. - ENetAddress addr = MakeENetAddress(&packet->pleaseSendPacket.address); + ENetAddress addr = MakeENetAddress(packet->pleaseSendPacket.address); if (addr.port != 0) { char message[] = "Hello from Dolphin Netplay..."; @@ -188,7 +188,7 @@ void TraversalClient::HandleServerPacket(TraversalPacket* packet) break; if (packet->type == TraversalPacketType::ConnectReady) - m_Client->OnConnectReady(MakeENetAddress(&packet->connectReady.address)); + m_Client->OnConnectReady(MakeENetAddress(packet->connectReady.address)); else m_Client->OnConnectFailed(packet->connectFailed.reason); break; -- cgit v1.2.3 From b425250a7b7ac0db9546baee41533979d5273bc3 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 19 Jan 2021 14:26:04 -0500 Subject: TraversalClient: Make use of std::string_view with ConnectToClient() Same behavior, but allows the use of non-allocating string types with the interface. --- Source/Core/Common/TraversalClient.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Source/Core/Common/TraversalClient.cpp') diff --git a/Source/Core/Common/TraversalClient.cpp b/Source/Core/Common/TraversalClient.cpp index 19014932a4..e34d2cbf2f 100644 --- a/Source/Core/Common/TraversalClient.cpp +++ b/Source/Core/Common/TraversalClient.cpp @@ -73,7 +73,7 @@ static ENetAddress MakeENetAddress(const TraversalInetAddress& address) return eaddr; } -void TraversalClient::ConnectToClient(const std::string& host) +void TraversalClient::ConnectToClient(std::string_view host) { if (host.size() > sizeof(TraversalHostId)) { @@ -82,7 +82,7 @@ void TraversalClient::ConnectToClient(const std::string& host) } TraversalPacket packet = {}; packet.type = TraversalPacketType::ConnectPlease; - memcpy(packet.connectPlease.hostId.data(), host.c_str(), host.size()); + memcpy(packet.connectPlease.hostId.data(), host.data(), host.size()); m_ConnectRequestId = SendTraversalPacket(packet); m_PendingConnect = true; } -- cgit v1.2.3