From 3a7df983d949cf198ad6783561a9d718aac8f219 Mon Sep 17 00:00:00 2001 From: puvvadar Date: Mon, 21 Jun 2021 14:31:14 -0700 Subject: [PATCH] Cleanup listen and connect logic to prevent log spam --- .../UdpTransport/UdpNetworkInterface.cpp | 22 ++++++++++++++----- .../Code/Include/Multiplayer/IMultiplayer.h | 6 +++-- .../Source/MultiplayerSystemComponent.cpp | 8 +++---- .../Code/Source/MultiplayerSystemComponent.h | 4 ++-- 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.cpp b/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.cpp index f2b5d667ad..9f1b98f81b 100644 --- a/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.cpp +++ b/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.cpp @@ -116,17 +116,29 @@ namespace AzNetworking m_port = port; m_allowIncomingConnections = true; - m_socket->Open(m_port, UdpSocket::CanAcceptConnections::True, m_trustZone); - m_readerThread.RegisterSocket(m_socket.get()); - return true; + if (m_socket->Open(m_port, UdpSocket::CanAcceptConnections::True, m_trustZone)) + { + m_readerThread.RegisterSocket(m_socket.get()); + return true; + } + else + { + return false; + } } ConnectionId UdpNetworkInterface::Connect(const IpAddress& remoteAddress) { if (!m_socket->IsOpen()) { - m_socket->Open(m_port, UdpSocket::CanAcceptConnections::False, m_trustZone); - m_readerThread.RegisterSocket(m_socket.get()); + if (m_socket->Open(m_port, UdpSocket::CanAcceptConnections::False, m_trustZone)) + { + m_readerThread.RegisterSocket(m_socket.get()); + } + else + { + return InvalidConnectionId; + } } const ConnectionId connectionId = m_connectionSet.GetNextConnectionId(); diff --git a/Gems/Multiplayer/Code/Include/Multiplayer/IMultiplayer.h b/Gems/Multiplayer/Code/Include/Multiplayer/IMultiplayer.h index 539288041a..b1579a4ac0 100644 --- a/Gems/Multiplayer/Code/Include/Multiplayer/IMultiplayer.h +++ b/Gems/Multiplayer/Code/Include/Multiplayer/IMultiplayer.h @@ -69,12 +69,14 @@ namespace Multiplayer //! Starts hosting a server //! @param port The port to listen for connection on //! @param isDedicated Whether the server is dedicated or client hosted - virtual void StartHosting(uint16_t port, bool isDedicated = true) = 0; + //! @return if the application successfully started hosting + virtual bool StartHosting(uint16_t port, bool isDedicated = true) = 0; //! Connects to the specified IP as a Client //! @param remoteAddress The domain or IP to connect to //! @param port The port to connect to - virtual void Connect(AZStd::string remoteAddress, uint16_t port) = 0; + //! @result if a connection was successfully created + virtual bool Connect(AZStd::string remoteAddress, uint16_t port) = 0; // Disconnects all multiplayer connections, stops listening on the server and invokes handlers appropriate to network context virtual void Terminate() = 0; diff --git a/Gems/Multiplayer/Code/Source/MultiplayerSystemComponent.cpp b/Gems/Multiplayer/Code/Source/MultiplayerSystemComponent.cpp index 2e2e820e60..32d8cfa600 100644 --- a/Gems/Multiplayer/Code/Source/MultiplayerSystemComponent.cpp +++ b/Gems/Multiplayer/Code/Source/MultiplayerSystemComponent.cpp @@ -201,17 +201,17 @@ namespace Multiplayer AZ::TickBus::Handler::BusDisconnect(); } - void MultiplayerSystemComponent::StartHosting(uint16_t port, bool isDedicated) + bool MultiplayerSystemComponent::StartHosting(uint16_t port, bool isDedicated) { InitializeMultiplayer(isDedicated ? MultiplayerAgentType::DedicatedServer : MultiplayerAgentType::ClientServer); - m_networkInterface->Listen(port); + return m_networkInterface->Listen(port); } - void MultiplayerSystemComponent::Connect(AZStd::string remoteAddress, uint16_t port) + bool MultiplayerSystemComponent::Connect(AZStd::string remoteAddress, uint16_t port) { InitializeMultiplayer(MultiplayerAgentType::Client); const IpAddress address(remoteAddress.c_str(), port, m_networkInterface->GetType()); - m_networkInterface->Connect(address); + return m_networkInterface->Connect(address) != InvalidConnectionId; } void MultiplayerSystemComponent::Terminate() diff --git a/Gems/Multiplayer/Code/Source/MultiplayerSystemComponent.h b/Gems/Multiplayer/Code/Source/MultiplayerSystemComponent.h index ef114404a6..a17723632d 100644 --- a/Gems/Multiplayer/Code/Source/MultiplayerSystemComponent.h +++ b/Gems/Multiplayer/Code/Source/MultiplayerSystemComponent.h @@ -113,8 +113,8 @@ namespace Multiplayer void AddConnectionAcquiredHandler(ConnectionAcquiredEvent::Handler& handler) override; void AddSessionInitHandler(SessionInitEvent::Handler& handler) override; void AddSessionShutdownHandler(SessionShutdownEvent::Handler& handler) override; - void StartHosting(uint16_t port, bool isDedicated = true) override; - void Connect(AZStd::string remoteAddress, uint16_t port) override; + bool StartHosting(uint16_t port, bool isDedicated = true) override; + bool Connect(AZStd::string remoteAddress, uint16_t port) override; void Terminate() override; void SendReadyForEntityUpdates(bool readyForEntityUpdates) override; AZ::TimeMs GetCurrentHostTimeMs() const override;