use jthread
This commit is contained in:
@@ -26,7 +26,7 @@ class EnetClient : private NonCopyable {
|
|||||||
EnetConnection m_Connection;
|
EnetConnection m_Connection;
|
||||||
Nz::ENetHost m_Host;
|
Nz::ENetHost m_Host;
|
||||||
Nz::ENetPeer* m_Peer;
|
Nz::ENetPeer* m_Peer;
|
||||||
std::thread m_Thread;
|
std::jthread m_Thread;
|
||||||
bool m_Running;
|
bool m_Running;
|
||||||
|
|
||||||
void Update();
|
void Update();
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ class EnetServer : private NonCopyable {
|
|||||||
|
|
||||||
Nz::ENetHost m_Host;
|
Nz::ENetHost m_Host;
|
||||||
bool m_Running;
|
bool m_Running;
|
||||||
std::thread m_Thread;
|
std::jthread m_Thread;
|
||||||
std::map<std::uint16_t, std::unique_ptr<EnetConnection>> m_Connections;
|
std::map<std::uint16_t, std::unique_ptr<EnetConnection>> m_Connections;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -6,16 +6,16 @@ namespace network {
|
|||||||
EnetClient::EnetClient(const Nz::IpAddress& address) : m_Running(true) {
|
EnetClient::EnetClient(const Nz::IpAddress& address) : m_Running(true) {
|
||||||
m_Host.Create(Nz::IpAddress::LoopbackIpV4, 1);
|
m_Host.Create(Nz::IpAddress::LoopbackIpV4, 1);
|
||||||
m_Peer = m_Host.Connect(address);
|
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);
|
m_Connection.SetPeer(m_Peer);
|
||||||
}
|
}
|
||||||
|
|
||||||
EnetClient::~EnetClient() {
|
EnetClient::~EnetClient() {
|
||||||
if (m_Peer->IsConnected())
|
if (m_Peer->IsConnected())
|
||||||
Disconnect();
|
Disconnect();
|
||||||
m_Host.Destroy();
|
|
||||||
m_Running = false;
|
m_Running = false;
|
||||||
m_Thread.join();
|
m_Thread.request_stop();
|
||||||
|
m_Host.Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnetClient::Disconnect() {
|
void EnetClient::Disconnect() {
|
||||||
|
|||||||
@@ -5,10 +5,12 @@
|
|||||||
namespace blitz {
|
namespace blitz {
|
||||||
namespace network {
|
namespace network {
|
||||||
|
|
||||||
EnetServer::EnetServer(std::uint16_t port) : m_Running(true) {
|
EnetServer::EnetServer(std::uint16_t a_Port) : m_Running(true) {
|
||||||
m_Host.Create(Nz::NetProtocol::Any, port, 80);
|
m_Running = m_Host.Create(Nz::NetProtocol::Any, a_Port, 80);
|
||||||
m_Host.AllowsIncomingConnections(true);
|
if (m_Running) {
|
||||||
m_Thread = std::thread(&EnetServer::WorkerThread, this);
|
m_Host.AllowsIncomingConnections(true);
|
||||||
|
m_Thread = std::jthread(&EnetServer::WorkerThread, this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnetServer::WorkerThread() {
|
void EnetServer::WorkerThread() {
|
||||||
@@ -96,7 +98,7 @@ void EnetServer::RemoveConnection(std::uint16_t a_PeerId) {
|
|||||||
|
|
||||||
void EnetServer::Destroy() {
|
void EnetServer::Destroy() {
|
||||||
m_Running = false;
|
m_Running = false;
|
||||||
m_Thread.join();
|
m_Thread.request_stop();
|
||||||
m_Host.Destroy();
|
m_Host.Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user