From 80b51b45089d2cf3aa5670454d1c971e4adff18c Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Sat, 21 Jun 2025 20:27:35 +0800 Subject: API(server/clients): runLoop, resumeHistory --- src/server/client.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'src/server/client.cpp') diff --git a/src/server/client.cpp b/src/server/client.cpp index d89aea0..f3d601a 100644 --- a/src/server/client.cpp +++ b/src/server/client.cpp @@ -40,7 +40,7 @@ Client::~Client() { m_sockfd.reset(); } -void Client::recvLoop() { +void Client::recvLoop(std::optional> cb) { while (true) { auto recvData = read(); if (!recvData->good) @@ -51,6 +51,9 @@ void Client::recvLoop() { continue; pClients->m_vDatas.push_back({recvData->data, self}); + + if (cb) + (*cb)(*recvData); } } @@ -98,13 +101,18 @@ UP Client::read(const std::string &msg, std::optionalgetDatas()) { - write(chat.msg); - recvLoop(); +void Client::runLoop(bool resumeHist, std::optional> cb) { + if (resumeHist) + resumeHistory(); - pClients->kick(self); - } + recvLoop(); + + pClients->kick(self); +} + +void Client::resumeHistory() { + for (const auto &chat : pClients->getDatas()) + write(chat.msg); } bool Client::isValid() { -- cgit v1.2.3