summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/chatManager.cpp10
-rw-r--r--src/chatManager.hpp4
-rw-r--r--src/session.cpp8
3 files changed, 19 insertions, 3 deletions
diff --git a/src/chatManager.cpp b/src/chatManager.cpp
index 5684de3..6d92e32 100644
--- a/src/chatManager.cpp
+++ b/src/chatManager.cpp
@@ -17,6 +17,14 @@ void CChatManager::newMessage(const SMessage &msg) {
m_vMessages.push_back(msg);
}
+std::string CChatManager::fmtBroadcastMessage(const SMessage &msg) {
+ return NFormatter::fmt(NONE, "{}: {}", msg.username, msg.msg);
+}
+
void CChatManager::broadcastMessage(const SMessage &msg) {
- g_pSessionManager->broadcastChat(NFormatter::fmt(NONE, "{}: {}", msg.username, msg.msg), msg.username);
+ g_pSessionManager->broadcastChat(fmtBroadcastMessage(msg), msg.username);
+}
+
+std::vector<CChatManager::SMessage> CChatManager::getChat() {
+ return m_vMessages;
}
diff --git a/src/chatManager.hpp b/src/chatManager.hpp
index 702ef37..4bfc10f 100644
--- a/src/chatManager.hpp
+++ b/src/chatManager.hpp
@@ -12,9 +12,11 @@ class CChatManager {
};
void newMessage(const SMessage &msg);
void broadcastMessage(const SMessage &msg);
+ std::string fmtBroadcastMessage(const SMessage &msg);
+
+ std::vector<SMessage> getChat();
private:
- void broadcastMessage(const std::string &msg, const std::string &username);
std::vector<SMessage> m_vMessages;
};
inline std::unique_ptr<CChatManager> g_pChatManager;
diff --git a/src/session.cpp b/src/session.cpp
index 2a25db2..8991b52 100644
--- a/src/session.cpp
+++ b/src/session.cpp
@@ -91,7 +91,13 @@ CSession::SRecvData CSession::read(const std::string &msg) {
void CSession::run() {
onConnect();
- registerSession() ? recvLoop() : log(LOG, "Client {} exited without even registering", m_ip);
+ if (registerSession()) {
+ // g_pSessionManager->broadcast(g_pChatManager->getChat());
+ for (const auto &chat : g_pChatManager->getChat())
+ write(g_pChatManager->fmtBroadcastMessage(chat));
+ recvLoop();
+ } else
+ log(LOG, "Client {} exited without even registering", m_ip);
g_pSessionManager->removeSession(self);
}