Serenity Operating System
at master 38 lines 855 B view raw
1/* 2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <LibCore/Notifier.h> 10#include <LibCore/Object.h> 11 12namespace Core { 13 14class LocalServer : public Object { 15 C_OBJECT(LocalServer) 16public: 17 virtual ~LocalServer() override; 18 19 ErrorOr<void> take_over_from_system_server(DeprecatedString const& path = DeprecatedString()); 20 bool is_listening() const { return m_listening; } 21 bool listen(DeprecatedString const& address); 22 23 ErrorOr<NonnullOwnPtr<LocalSocket>> accept(); 24 25 Function<void(NonnullOwnPtr<LocalSocket>)> on_accept; 26 Function<void(Error)> on_accept_error; 27 28private: 29 explicit LocalServer(Object* parent = nullptr); 30 31 void setup_notifier(); 32 33 int m_fd { -1 }; 34 bool m_listening { false }; 35 RefPtr<Notifier> m_notifier; 36}; 37 38}