diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-06-18 11:21:15 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-06-18 11:21:15 +0800 |
| commit | f5aacb29f5f238ae9121bf43d96ad2eba361e7b7 (patch) | |
| tree | da6fbe7a95601c4ae802e521fac9e2dda9d7484a /src/server/clients.cpp | |
| parent | 78468145f073bc8aa315206fbd9b46b92e37ea45 (diff) | |
API(server/clients): callback fucntion for kick function
Diffstat (limited to 'src/server/clients.cpp')
| -rw-r--r-- | src/server/clients.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/server/clients.cpp b/src/server/clients.cpp index d3a9908..1a11ed7 100644 --- a/src/server/clients.cpp +++ b/src/server/clients.cpp @@ -99,7 +99,7 @@ std::vector<SData> Clients::getDatas() const { return m_vDatas; } -void Clients::kick(WP<Client> clientWeak, const bool kill, const std::string &reason) { +void Clients::kick(WP<Client> clientWeak, const bool kill, const std::string &reason, std::optional<std::function<std::any(const std::vector<std::pair<std::jthread, SP<Client>>>::iterator &)>> cb) { auto client = clientWeak.lock(); if (!client) return; @@ -108,9 +108,9 @@ void Clients::kick(WP<Client> clientWeak, const bool kill, const std::string &re if (it->second == client) { if (client && !client->getName().empty()) // this only exist when the client is registered - // not sure why the second is null, but m_name definately is since it's setted during register - // but we don't need to notify people if the client didn't even "join"/register anyways - broadcast(std::format("{} has left the chat", client->getName()), clientWeak); + // not sure why the second is null + if (cb) + (*cb)(it); if (!reason.empty()) client->write(reason); |
