diff options
Diffstat (limited to 'include/libsock')
| -rw-r--r-- | include/libsock/server/client.hpp | 7 | ||||
| -rw-r--r-- | include/libsock/server/clients.hpp | 11 | ||||
| -rw-r--r-- | include/libsock/server/server.hpp | 7 |
3 files changed, 17 insertions, 8 deletions
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> server = pServer, SP<Clients> clients = pClients, bool track = false, bool oneShot = true); + Client(SP<Server> server, SP<Clients> clients, bool track = false, bool oneShot = true); + + WP<Client> m_self; + WP<Server> m_wpServer; + WP<Clients> m_wpClients; - WP<Client> self; SP<LibSock::CFileDescriptor> 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<Clients> { public: - static SP<Clients> create(); + static SP<Clients> create(WP<Server> server); ~Clients(); - WP<Client> newClient(std::function<void(const WP<Client> &)> loopFunc = [](const WP<Client> &) { ; }, SP<Server> server = pServer); + SP<Client> newClient(std::function<void(const WP<Client> &)> loopFunc = [](const WP<Client> &) { ; }); void broadcast(const std::string &msg, std::optional<WP<Client>> 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<Clients> { std::vector<std::pair<std::jthread, SP<Client>>> m_vClients; std::vector<SData> m_vDatas; - SP<Clients> get(); + WP<Clients> get(); + + WP<Clients> m_self; + WP<Server> m_wpServer; friend class Client; }; -inline SP<Clients> pClients; +inline std::vector<WP<Clients>> 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 <memory> #include <mutex> #include <netinet/in.h> +#include <vector> namespace LibSock { namespace Server { @@ -20,10 +21,12 @@ class Server : public std::enable_shared_from_this<Server> { sockaddr_in m_addr; uint16_t m_port; - SP<Server> get(); + WP<Server> get(); + + WP<Server> m_self; mutable std::mutex m_mutex; }; -inline SP<Server> pServer; +inline std::vector<SP<Server>> vpServer; } // namespace Server } // namespace LibSock |
