From 9b61c218b665f94f5cc383a5e607b951ce6af121 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Sun, 22 Jun 2025 15:09:42 +0800 Subject: refactor(server): properly use weak pointer API!(server/client:create): require manually specifying server API!(server/client:newClient): now returns a SP instead of WP --- include/libsock/server/client.hpp | 7 +++++-- include/libsock/server/clients.hpp | 11 +++++++---- include/libsock/server/server.hpp | 7 +++++-- 3 files changed, 17 insertions(+), 8 deletions(-) (limited to 'include') diff --git a/include/libsock/server/client.hpp b/include/libsock/server/client.hpp index 2549ef5..591bc2a 100644 --- a/include/libsock/server/client.hpp +++ b/include/libsock/server/client.hpp @@ -48,9 +48,12 @@ class Client { bool isValid(); private: - Client(SP server = pServer, SP clients = pClients, bool track = false, bool oneShot = true); + Client(SP server, SP clients, bool track = false, bool oneShot = true); + + WP m_self; + WP m_wpServer; + WP m_wpClients; - WP self; SP m_sockfd; sockaddr_in m_addr; socklen_t m_addrLen = sizeof(m_addr); diff --git a/include/libsock/server/clients.hpp b/include/libsock/server/clients.hpp index d8c1921..b18c043 100644 --- a/include/libsock/server/clients.hpp +++ b/include/libsock/server/clients.hpp @@ -21,10 +21,10 @@ struct SData { class Clients : public std::enable_shared_from_this { public: - static SP create(); + static SP create(WP server); ~Clients(); - WP newClient(std::function &)> loopFunc = [](const WP &) { ; }, SP server = pServer); + SP newClient(std::function &)> loopFunc = [](const WP &) { ; }); void broadcast(const std::string &msg, std::optional> self = std::nullopt); // second param only specified when we // want to exclude the sender @@ -44,10 +44,13 @@ class Clients : public std::enable_shared_from_this { std::vector>> m_vClients; std::vector m_vDatas; - SP get(); + WP get(); + + WP m_self; + WP m_wpServer; friend class Client; }; -inline SP pClients; +inline std::vector> vpClients; } // namespace Server } // namespace LibSock diff --git a/include/libsock/server/server.hpp b/include/libsock/server/server.hpp index 225bdb0..f980c97 100644 --- a/include/libsock/server/server.hpp +++ b/include/libsock/server/server.hpp @@ -4,6 +4,7 @@ #include #include #include +#include namespace LibSock { namespace Server { @@ -20,10 +21,12 @@ class Server : public std::enable_shared_from_this { sockaddr_in m_addr; uint16_t m_port; - SP get(); + WP get(); + + WP m_self; mutable std::mutex m_mutex; }; -inline SP pServer; +inline std::vector> vpServer; } // namespace Server } // namespace LibSock -- cgit v1.2.3