diff options
author | Andreas Kling <kling@serenityos.org> | 2021-12-06 18:11:05 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-12-06 19:22:16 +0100 |
commit | 971b3645efa31df913b7d614e0c5e1a865e24644 (patch) | |
tree | db548b1dbf7f04062e3d6585255144e35d3839d4 /Userland/DevTools/HackStudio/LanguageServers | |
parent | 6d0f504822bad8baaed79ed55e43e7a253efa187 (diff) | |
download | serenity-971b3645efa31df913b7d614e0c5e1a865e24644.zip |
LibIPC: Add IPC::take_over_accepted_client_from_system_server<Client>()
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. :^)
Diffstat (limited to 'Userland/DevTools/HackStudio/LanguageServers')
6 files changed, 13 insertions, 16 deletions
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<int, RefPtr<ClientConnection>> s_connections; -ClientConnection::ClientConnection(NonnullRefPtr<Core::LocalSocket> socket, int client_id) - : IPC::ClientConnection<LanguageClientEndpoint, LanguageServerEndpoint>(*this, move(socket), client_id) +ClientConnection::ClientConnection(NonnullRefPtr<Core::LocalSocket> socket) + : IPC::ClientConnection<LanguageClientEndpoint, LanguageServerEndpoint>(*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<LanguageClientEndpoint, LanguageServerEndpoint> { public: - explicit ClientConnection(NonnullRefPtr<Core::LocalSocket>, int client_id); + explicit ClientConnection(NonnullRefPtr<Core::LocalSocket>); ~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<Core::LocalSocket> socket, int client_id) - : LanguageServers::ClientConnection(move(socket), client_id) + ClientConnection(NonnullRefPtr<Core::LocalSocket> socket) + : LanguageServers::ClientConnection(move(socket)) { m_autocomplete_engine = make<CppComprehensionEngine>(m_filedb); m_autocomplete_engine->set_declarations_of_document_callback = [this](const String& filename, Vector<GUI::AutocompleteProvider::Declaration>&& 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 <AK/LexicalPath.h> #include <LibCore/ArgsParser.h> #include <LibCore/EventLoop.h> #include <LibCore/LocalServer.h> #include <LibCore/System.h> -#include <LibIPC/ClientConnection.h> +#include <LibIPC/SingleServer.h> #include <LibMain/Main.h> -#include <unistd.h> static ErrorOr<int> mode_server(); @@ -36,8 +34,7 @@ ErrorOr<int> 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<LanguageServers::Cpp::ClientConnection>(move(socket), 1); + auto client = TRY(IPC::take_over_accepted_client_from_system_server<LanguageServers::Cpp::ClientConnection>()); 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<Core::LocalSocket> socket, int client_id) - : LanguageServers::ClientConnection(move(socket), client_id) + ClientConnection(NonnullRefPtr<Core::LocalSocket> socket) + : LanguageServers::ClientConnection(move(socket)) { m_autocomplete_engine = make<ShellComprehensionEngine>(m_filedb); m_autocomplete_engine->set_declarations_of_document_callback = [this](const String& filename, Vector<GUI::AutocompleteProvider::Declaration>&& 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 <LibCore/EventLoop.h> #include <LibCore/LocalServer.h> #include <LibCore/System.h> -#include <LibIPC/ClientConnection.h> +#include <LibIPC/SingleServer.h> #include <LibMain/Main.h> ErrorOr<int> serenity_main(Main::Arguments) @@ -16,8 +16,8 @@ ErrorOr<int> 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<LanguageServers::Shell::ClientConnection>(move(socket), 1); + auto client = TRY(IPC::take_over_accepted_client_from_system_server<LanguageServers::Shell::ClientConnection>()); + TRY(Core::System::pledge("stdio rpath recvfd")); TRY(Core::System::unveil("/etc/passwd", "r")); |