mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-23 09:51:57 -05:00
LibIPC: Add a hook to MultiServer to inform owners of new clients
This will allow the owner of the server to mutate the client after it has been accepted.
This commit is contained in:
parent
c46c3555a1
commit
6b64485b40
1 changed files with 7 additions and 1 deletions
|
@ -7,6 +7,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <AK/Error.h>
|
||||
#include <AK/Function.h>
|
||||
#include <LibCore/LocalServer.h>
|
||||
#include <LibIPC/ConnectionFromClient.h>
|
||||
|
||||
|
@ -22,13 +23,18 @@ public:
|
|||
return adopt_nonnull_own_or_enomem(new (nothrow) MultiServer(move(server)));
|
||||
}
|
||||
|
||||
Function<void(ConnectionFromClientType&)> on_new_client;
|
||||
|
||||
private:
|
||||
explicit MultiServer(NonnullRefPtr<Core::LocalServer> server)
|
||||
: m_server(move(server))
|
||||
{
|
||||
m_server->on_accept = [&](auto client_socket) {
|
||||
auto client_id = ++m_next_client_id;
|
||||
(void)IPC::new_client_connection<ConnectionFromClientType>(move(client_socket), client_id);
|
||||
|
||||
auto client = IPC::new_client_connection<ConnectionFromClientType>(move(client_socket), client_id);
|
||||
if (on_new_client)
|
||||
on_new_client(*client);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue