diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-06-22 17:21:46 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-06-22 17:21:46 +0800 |
| commit | 65672b471cdcd43daff8fcbbc6ff5d0d54159785 (patch) | |
| tree | 336cbcf7518e4d72b5fc0c9fa4f1f7e3885d14f9 /src | |
| parent | 06ce37648964daa05a01d0105eb8f68eb55a21e0 (diff) | |
API(server/client:newClient): optional cb function onConnect
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/clients.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/server/clients.cpp b/src/server/clients.cpp index 710f813..58f7bca 100644 --- a/src/server/clients.cpp +++ b/src/server/clients.cpp @@ -1,6 +1,7 @@ #include "libsock/server/clients.hpp" #include "libsock/server/client.hpp" #include <algorithm> +#include <functional> #include <ranges> #include <unistd.h> #include <utility> @@ -58,9 +59,9 @@ Clients::~Clients() { vpClients.erase(std::remove_if(vpClients.begin(), vpClients.end(), [this](const WP<Clients> &wptr) { return !wptr.owner_before(m_self) && !m_self.owner_before(wptr); }), vpClients.end()); } -SP<Client> Clients::newClient() { +SP<Client> Clients::newClient(std::function<void(SP<Client> &)> cb) { SP client = SP<Client>(new Client(m_wpServer.lock(), shared_from_this())); - auto &instance = m_vClients.emplace_back(std::jthread([&client]() { client->init(); }), client); + auto &instance = m_vClients.emplace_back(std::jthread([&client, &cb]() { client->init(); cb(client); }), client); instance.second->m_self = std::weak_ptr<Client>(instance.second); return client; } |
