/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace Core { class LocalServer : public EventReceiver { C_OBJECT(LocalServer) public: virtual ~LocalServer() override; ErrorOr take_over_from_system_server(ByteString const& path = ByteString()); ErrorOr take_over_fd(int socket_fd); bool is_listening() const { return m_listening; } bool listen(ByteString const& address); ErrorOr> accept(); Function)> on_accept; Function on_accept_error; private: explicit LocalServer(EventReceiver* parent = nullptr); void setup_notifier(); int m_fd { -1 }; bool m_listening { false }; RefPtr m_notifier; }; }