Serenity Operating System
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}