From 3ad8cca9f6fecfb4c1f70f0a8c9d4b860f4c2df3 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Thu, 12 Jun 2025 21:03:17 +0800 Subject: internal!: refactored to smart pointer --- src/sessionManager.hpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src/sessionManager.hpp') diff --git a/src/sessionManager.hpp b/src/sessionManager.hpp index eb3705e..179d7d8 100644 --- a/src/sessionManager.hpp +++ b/src/sessionManager.hpp @@ -12,21 +12,24 @@ class CSessionManager { CSessionManager(); ~CSessionManager(); - std::pair> *newSession(); + void newSession(); void run(); - void broadcast(const std::string &msg, std::optional self = std::nullopt) const; // second param only specified when we want to exclude the sender - void kick(CSession *session, const bool kill = false, const std::string &reason = ""); - void kick(std::pair> *session, const bool kill = false, const std::string &reason = ""); + void broadcast(const std::string &msg, std::optional> self = std::nullopt) const; // second param only specified when we want to exclude the sender + void kick(std::weak_ptr session, const bool kill = false, const std::string &reason = ""); void addSession(const CSession &session); bool nameExists(const std::string &name); void shutdownSessions(); - CSession *getByName(const std::string &name) const; - CSession *getByIp(const std::string &ip) const; + std::shared_ptr getByName(const std::string &name) const; + std::shared_ptr getByIp(const std::string &ip) const; std::vector> getSessions() const; + // Safer weak_ptr versions - recommended for most use cases to avoid accidental lifetime extension + std::weak_ptr getByNameWeak(const std::string &name) const; + std::weak_ptr getByIpWeak(const std::string &ip) const; + private: void broadcast(const CChatManager::SMessage &msg) const; -- cgit v1.2.3