LocalServer.h 740 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /*
  2. * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibCore/Notifier.h>
  8. #include <LibCore/Object.h>
  9. namespace Core {
  10. class LocalServer : public Object {
  11. C_OBJECT(LocalServer)
  12. public:
  13. virtual ~LocalServer() override;
  14. bool take_over_from_system_server(String const& path = String());
  15. bool is_listening() const { return m_listening; }
  16. bool listen(const String& address);
  17. RefPtr<LocalSocket> accept();
  18. Function<void()> on_ready_to_accept;
  19. private:
  20. explicit LocalServer(Object* parent = nullptr);
  21. void setup_notifier();
  22. int m_fd { -1 };
  23. bool m_listening { false };
  24. RefPtr<Notifier> m_notifier;
  25. };
  26. }