@@ -47,6 +47,17 @@ ErrorOr<void> LocalServer::take_over_from_system_server(ByteString const& socket
return {};
}
+ErrorOr<void> LocalServer::take_over_fd(int socket_fd)
+{
+ if (m_listening)
+ return Error::from_string_literal("Core::LocalServer: Can't perform socket takeover when already listening");
+
+ m_fd = socket_fd;
+ m_listening = true;
+ setup_notifier();
+ return {};
+}
void LocalServer::setup_notifier()
{
m_notifier = Notifier::construct(m_fd, Notifier::Type::Read, this);
@@ -17,6 +17,7 @@ public:
virtual ~LocalServer() override;
ErrorOr<void> take_over_from_system_server(ByteString const& path = ByteString());
+ ErrorOr<void> take_over_fd(int socket_fd);
bool is_listening() const { return m_listening; }
bool listen(ByteString const& address);