CNotifier.cpp 776 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include <LibCore/CEvent.h>
  2. #include <LibCore/CEventLoop.h>
  3. #include <LibCore/CNotifier.h>
  4. CNotifier::CNotifier(int fd, unsigned event_mask, CObject* parent)
  5. : CObject(parent)
  6. , m_fd(fd)
  7. , m_event_mask(event_mask)
  8. {
  9. set_enabled(true);
  10. }
  11. CNotifier::~CNotifier()
  12. {
  13. set_enabled(false);
  14. }
  15. void CNotifier::set_enabled(bool enabled)
  16. {
  17. if (enabled)
  18. CEventLoop::register_notifier({}, *this);
  19. else
  20. CEventLoop::unregister_notifier({}, *this);
  21. }
  22. void CNotifier::event(CEvent& event)
  23. {
  24. if (event.type() == CEvent::NotifierRead && on_ready_to_read) {
  25. on_ready_to_read();
  26. } else if (event.type() == CEvent::NotifierWrite && on_ready_to_write) {
  27. on_ready_to_write();
  28. } else {
  29. CObject::event(event);
  30. }
  31. }