#pragma once #include #include #include #include #include class CChatManager { public: CChatManager(); ~CChatManager(); struct SMessage { std::string msg; std::string username; std::optional sender = std::nullopt; // cant include session to use CSession* cause circular dependency bool admin = false; }; void newMessage(const SMessage &msg); std::string fmtBroadcastMessage(const SMessage &msg); std::vector getChat() const; private: mutable std::mutex m_mutex; }; inline std::unique_ptr g_pChatManager;