From 971b3645efa31df913b7d614e0c5e1a865e24644 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 6 Dec 2021 18:11:05 +0100 Subject: LibIPC: Add IPC::take_over_accepted_client_from_system_server() This is an encapsulation of the common work done by all of our single-client IPC servers on startup: 1. Create a Core::LocalSocket, taking over an accepted fd. 2. Create an application-specific ClientConnection object, wrapping the socket. It's not a huge change in terms of lines saved, but I do feel that it improves expressiveness. :^) --- Userland/DevTools/HackStudio/LanguageServers/ClientConnection.cpp | 6 +++--- Userland/DevTools/HackStudio/LanguageServers/ClientConnection.h | 2 +- .../DevTools/HackStudio/LanguageServers/Cpp/ClientConnection.h | 4 ++-- Userland/DevTools/HackStudio/LanguageServers/Cpp/main.cpp | 7 ++----- .../DevTools/HackStudio/LanguageServers/Shell/ClientConnection.h | 4 ++-- Userland/DevTools/HackStudio/LanguageServers/Shell/main.cpp | 6 +++--- 6 files changed, 13 insertions(+), 16 deletions(-) (limited to 'Userland/DevTools/HackStudio/LanguageServers') diff --git a/Userland/DevTools/HackStudio/LanguageServers/ClientConnection.cpp b/Userland/DevTools/HackStudio/LanguageServers/ClientConnection.cpp index 567268a994..f7e21a2d36 100644 --- a/Userland/DevTools/HackStudio/LanguageServers/ClientConnection.cpp +++ b/Userland/DevTools/HackStudio/LanguageServers/ClientConnection.cpp @@ -14,10 +14,10 @@ namespace LanguageServers { static HashMap> s_connections; -ClientConnection::ClientConnection(NonnullRefPtr socket, int client_id) - : IPC::ClientConnection(*this, move(socket), client_id) +ClientConnection::ClientConnection(NonnullRefPtr socket) + : IPC::ClientConnection(*this, move(socket), 1) { - s_connections.set(client_id, *this); + s_connections.set(1, *this); } ClientConnection::~ClientConnection() diff --git a/Userland/DevTools/HackStudio/LanguageServers/ClientConnection.h b/Userland/DevTools/HackStudio/LanguageServers/ClientConnection.h index 1901743463..951da34cac 100644 --- a/Userland/DevTools/HackStudio/LanguageServers/ClientConnection.h +++ b/Userland/DevTools/HackStudio/LanguageServers/ClientConnection.h @@ -20,7 +20,7 @@ namespace LanguageServers { class ClientConnection : public IPC::ClientConnection { public: - explicit ClientConnection(NonnullRefPtr, int client_id); + explicit ClientConnection(NonnullRefPtr); ~ClientConnection() override; virtual void die() override; diff --git a/Userland/DevTools/HackStudio/LanguageServers/Cpp/ClientConnection.h b/Userland/DevTools/HackStudio/LanguageServers/Cpp/ClientConnection.h index f67e888015..c2fae04cca 100644 --- a/Userland/DevTools/HackStudio/LanguageServers/Cpp/ClientConnection.h +++ b/Userland/DevTools/HackStudio/LanguageServers/Cpp/ClientConnection.h @@ -15,8 +15,8 @@ class ClientConnection final : public LanguageServers::ClientConnection { C_OBJECT(ClientConnection); private: - ClientConnection(NonnullRefPtr socket, int client_id) - : LanguageServers::ClientConnection(move(socket), client_id) + ClientConnection(NonnullRefPtr socket) + : LanguageServers::ClientConnection(move(socket)) { m_autocomplete_engine = make(m_filedb); m_autocomplete_engine->set_declarations_of_document_callback = [this](const String& filename, Vector&& declarations) { diff --git a/Userland/DevTools/HackStudio/LanguageServers/Cpp/main.cpp b/Userland/DevTools/HackStudio/LanguageServers/Cpp/main.cpp index b40b972a92..3fd711bbc2 100644 --- a/Userland/DevTools/HackStudio/LanguageServers/Cpp/main.cpp +++ b/Userland/DevTools/HackStudio/LanguageServers/Cpp/main.cpp @@ -6,14 +6,12 @@ #include "ClientConnection.h" #include "Tests.h" -#include #include #include #include #include -#include +#include #include -#include static ErrorOr mode_server(); @@ -36,8 +34,7 @@ ErrorOr mode_server() Core::EventLoop event_loop; TRY(Core::System::pledge("stdio unix recvfd rpath")); - auto socket = TRY(Core::LocalSocket::take_over_accepted_socket_from_system_server()); - (void)IPC::new_client_connection(move(socket), 1); + auto client = TRY(IPC::take_over_accepted_client_from_system_server()); TRY(Core::System::pledge("stdio recvfd rpath")); TRY(Core::System::unveil("/usr/include", "r")); diff --git a/Userland/DevTools/HackStudio/LanguageServers/Shell/ClientConnection.h b/Userland/DevTools/HackStudio/LanguageServers/Shell/ClientConnection.h index 3eb2adbde6..bedce254d9 100644 --- a/Userland/DevTools/HackStudio/LanguageServers/Shell/ClientConnection.h +++ b/Userland/DevTools/HackStudio/LanguageServers/Shell/ClientConnection.h @@ -16,8 +16,8 @@ class ClientConnection final : public LanguageServers::ClientConnection { C_OBJECT(ClientConnection); private: - ClientConnection(NonnullRefPtr socket, int client_id) - : LanguageServers::ClientConnection(move(socket), client_id) + ClientConnection(NonnullRefPtr socket) + : LanguageServers::ClientConnection(move(socket)) { m_autocomplete_engine = make(m_filedb); m_autocomplete_engine->set_declarations_of_document_callback = [this](const String& filename, Vector&& declarations) { diff --git a/Userland/DevTools/HackStudio/LanguageServers/Shell/main.cpp b/Userland/DevTools/HackStudio/LanguageServers/Shell/main.cpp index 7b4c4b8a69..a36673ca6c 100644 --- a/Userland/DevTools/HackStudio/LanguageServers/Shell/main.cpp +++ b/Userland/DevTools/HackStudio/LanguageServers/Shell/main.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include ErrorOr serenity_main(Main::Arguments) @@ -16,8 +16,8 @@ ErrorOr serenity_main(Main::Arguments) Core::EventLoop event_loop; TRY(Core::System::pledge("stdio unix rpath recvfd")); - auto socket = TRY(Core::LocalSocket::take_over_accepted_socket_from_system_server()); - (void)IPC::new_client_connection(move(socket), 1); + auto client = TRY(IPC::take_over_accepted_client_from_system_server()); + TRY(Core::System::pledge("stdio rpath recvfd")); TRY(Core::System::unveil("/etc/passwd", "r")); -- cgit v1.2.3