From adb6dce08a6ce904fa4bc733645f2d6a46872345 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Wed, 7 Aug 2024 11:50:07 +0200 Subject: [PATCH] use jthread --- include/blitz/network/EnetClient.h | 2 +- include/blitz/network/EnetServer.h | 2 +- src/blitz/network/EnetClient.cpp | 6 +++--- src/blitz/network/EnetServer.cpp | 12 +++++++----- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/include/blitz/network/EnetClient.h b/include/blitz/network/EnetClient.h index 4f8ae16..89450c2 100644 --- a/include/blitz/network/EnetClient.h +++ b/include/blitz/network/EnetClient.h @@ -26,7 +26,7 @@ class EnetClient : private NonCopyable { EnetConnection m_Connection; Nz::ENetHost m_Host; Nz::ENetPeer* m_Peer; - std::thread m_Thread; + std::jthread m_Thread; bool m_Running; void Update(); diff --git a/include/blitz/network/EnetServer.h b/include/blitz/network/EnetServer.h index d50df8d..59dd194 100644 --- a/include/blitz/network/EnetServer.h +++ b/include/blitz/network/EnetServer.h @@ -33,7 +33,7 @@ class EnetServer : private NonCopyable { Nz::ENetHost m_Host; bool m_Running; - std::thread m_Thread; + std::jthread m_Thread; std::map> m_Connections; }; diff --git a/src/blitz/network/EnetClient.cpp b/src/blitz/network/EnetClient.cpp index d0448c3..eda13ed 100644 --- a/src/blitz/network/EnetClient.cpp +++ b/src/blitz/network/EnetClient.cpp @@ -6,16 +6,16 @@ namespace network { EnetClient::EnetClient(const Nz::IpAddress& address) : m_Running(true) { m_Host.Create(Nz::IpAddress::LoopbackIpV4, 1); m_Peer = m_Host.Connect(address); - m_Thread = std::thread(&EnetClient::WorkerThread, this); + m_Thread = std::jthread(&EnetClient::WorkerThread, this); m_Connection.SetPeer(m_Peer); } EnetClient::~EnetClient() { if (m_Peer->IsConnected()) Disconnect(); - m_Host.Destroy(); m_Running = false; - m_Thread.join(); + m_Thread.request_stop(); + m_Host.Destroy(); } void EnetClient::Disconnect() { diff --git a/src/blitz/network/EnetServer.cpp b/src/blitz/network/EnetServer.cpp index 2b3ba63..9caaf36 100644 --- a/src/blitz/network/EnetServer.cpp +++ b/src/blitz/network/EnetServer.cpp @@ -5,10 +5,12 @@ namespace blitz { namespace network { -EnetServer::EnetServer(std::uint16_t port) : m_Running(true) { - m_Host.Create(Nz::NetProtocol::Any, port, 80); - m_Host.AllowsIncomingConnections(true); - m_Thread = std::thread(&EnetServer::WorkerThread, this); +EnetServer::EnetServer(std::uint16_t a_Port) : m_Running(true) { + m_Running = m_Host.Create(Nz::NetProtocol::Any, a_Port, 80); + if (m_Running) { + m_Host.AllowsIncomingConnections(true); + m_Thread = std::jthread(&EnetServer::WorkerThread, this); + } } void EnetServer::WorkerThread() { @@ -96,7 +98,7 @@ void EnetServer::RemoveConnection(std::uint16_t a_PeerId) { void EnetServer::Destroy() { m_Running = false; - m_Thread.join(); + m_Thread.request_stop(); m_Host.Destroy(); }