Переглянути джерело

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.
Timothy Flynn 2 роки тому
батько
коміт
6b64485b40
1 змінених файлів з 7 додано та 1 видалено
  1. 7 1
      Userland/Libraries/LibIPC/MultiServer.h

+ 7 - 1
Userland/Libraries/LibIPC/MultiServer.h

@@ -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);
         };
     }