Serenity Operating System
at master 46 lines 884 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 <AK/Function.h> 10#include <LibCore/Object.h> 11 12namespace Core { 13 14class Notifier : public Object { 15 C_OBJECT(Notifier) 16public: 17 enum Event { 18 None = 0, 19 Read = 1, 20 Write = 2, 21 Exceptional = 4, 22 }; 23 24 virtual ~Notifier() override; 25 26 void set_enabled(bool); 27 28 Function<void()> on_ready_to_read; 29 Function<void()> on_ready_to_write; 30 31 void close(); 32 33 int fd() const { return m_fd; } 34 unsigned event_mask() const { return m_event_mask; } 35 void set_event_mask(unsigned event_mask) { m_event_mask = event_mask; } 36 37 void event(Core::Event&) override; 38 39private: 40 Notifier(int fd, unsigned event_mask, Object* parent = nullptr); 41 42 int m_fd { -1 }; 43 unsigned m_event_mask { 0 }; 44}; 45 46}