Browse Source

Ladybird: Register SQLServer with the task manager

Timothy Flynn 1 năm trước cách đây
mục cha
commit
b83babdf8b
2 tập tin đã thay đổi với 23 bổ sung3 xóa
  1. 10 1
      Ladybird/HelperProcess.cpp
  2. 13 2
      Ladybird/SQLServer/main.cpp

+ 10 - 1
Ladybird/HelperProcess.cpp

@@ -187,7 +187,16 @@ ErrorOr<NonnullRefPtr<Protocol::RequestClient>> launch_request_server_process(Re
 
 ErrorOr<NonnullRefPtr<SQL::SQLClient>> launch_sql_server_process(ReadonlySpan<ByteString> candidate_sql_server_paths)
 {
-    auto [client, _] = TRY(Core::launch_singleton_process<SQL::SQLClient>("SQLServer"sv, candidate_sql_server_paths));
+    Vector<ByteString> arguments;
+
+    if (auto server = mach_server_name(); server.has_value()) {
+        arguments.append("--mach-server-name"sv);
+        arguments.append(server.value());
+    }
+
+    auto [client, pid] = TRY(Core::launch_singleton_process<SQL::SQLClient>("SQLServer"sv, candidate_sql_server_paths, arguments));
+    WebView::ProcessManager::the().add_process(WebView::ProcessType::SQLServer, pid);
+
     return client;
 }
 

+ 13 - 2
Ladybird/SQLServer/main.cpp

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, Tim Flynn <trflynn89@serenityos.org>
+ * Copyright (c) 2022-2024, Tim Flynn <trflynn89@serenityos.org>
  *
  * SPDX-License-Identifier: BSD-2-Clause
  */
@@ -13,14 +13,20 @@
 #include <LibMain/Main.h>
 #include <SQLServer/ConnectionFromClient.h>
 
+#if defined(AK_OS_MACOS)
+#    include <LibCore/Platform/ProcessStatisticsMach.h>
+#endif
+
 ErrorOr<int> serenity_main(Main::Arguments arguments)
 {
     AK::set_rich_debug_enabled(true);
 
-    ByteString pid_file;
+    StringView pid_file;
+    StringView mach_server_name;
 
     Core::ArgsParser args_parser;
     args_parser.add_option(pid_file, "Path to the PID file for the SQLServer singleton process", "pid-file", 'p', "pid_file");
+    args_parser.add_option(mach_server_name, "Mach server name", "mach-server-name", 0, "mach_server_name");
     args_parser.parse(arguments);
 
     VERIFY(!pid_file.is_empty());
@@ -30,6 +36,11 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
 
     Core::EventLoop loop;
 
+#if defined(AK_OS_MACOS)
+    if (!mach_server_name.is_empty())
+        Core::Platform::register_with_mach_server(mach_server_name);
+#endif
+
     auto server = TRY(IPC::MultiServer<SQLServer::ConnectionFromClient>::try_create());
     u64 connection_count { 0 };