summaryrefslogtreecommitdiff
path: root/Userland/DevTools/HackStudio/LanguageServers
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-12-06 18:11:05 +0100
committerAndreas Kling <kling@serenityos.org>2021-12-06 19:22:16 +0100
commit971b3645efa31df913b7d614e0c5e1a865e24644 (patch)
treedb548b1dbf7f04062e3d6585255144e35d3839d4 /Userland/DevTools/HackStudio/LanguageServers
parent6d0f504822bad8baaed79ed55e43e7a253efa187 (diff)
downloadserenity-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')
-rw-r--r--Userland/DevTools/HackStudio/LanguageServers/ClientConnection.cpp6
-rw-r--r--Userland/DevTools/HackStudio/LanguageServers/ClientConnection.h2
-rw-r--r--Userland/DevTools/HackStudio/LanguageServers/Cpp/ClientConnection.h4
-rw-r--r--Userland/DevTools/HackStudio/LanguageServers/Cpp/main.cpp7
-rw-r--r--Userland/DevTools/HackStudio/LanguageServers/Shell/ClientConnection.h4
-rw-r--r--Userland/DevTools/HackStudio/LanguageServers/Shell/main.cpp6
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"));