Notifier.h 884 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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 <AK/Function.h>
  8. #include <LibCore/Object.h>
  9. namespace Core {
  10. class Notifier : public Object {
  11. C_OBJECT(Notifier)
  12. public:
  13. enum Event {
  14. None = 0,
  15. Read = 1,
  16. Write = 2,
  17. Exceptional = 4,
  18. };
  19. virtual ~Notifier() override;
  20. void set_enabled(bool);
  21. Function<void()> on_ready_to_read;
  22. Function<void()> on_ready_to_write;
  23. void close();
  24. int fd() const { return m_fd; }
  25. unsigned event_mask() const { return m_event_mask; }
  26. void set_event_mask(unsigned event_mask) { m_event_mask = event_mask; }
  27. void event(Core::Event&) override;
  28. private:
  29. Notifier(int fd, unsigned event_mask, Object* parent = nullptr);
  30. int m_fd { -1 };
  31. unsigned m_event_mask { 0 };
  32. };
  33. }